2017-05-07 76 views
0

我正在尝试制作批文件以将文件从文本列表复制到文件夹。该代码被复制在这个论坛上,但它不起作用。批文件从文本文件中复制文件列表

文本列表在桌面上。

LIST.TXT

,并包含,例如,

C:\用户\桌面\测试\ item1.ipt
C:\用户\桌面\测试\ item2.ipt
C:\ Users ... \ Desktop \ Test \ item3.ipt
C:\ Users ... \ Desktop \ Test \ item4.ipt
C:\ Users ... \ Desktop \ Test \ item5.ipt
C:\ Users ... \ Desktop \ Test \ item6.ipt

和我的批处理文件也在桌面上。

@echo off 
FOR /F "delims=" %%a IN (C:\Users\...\Desktop\list.txt) DO COPY "%%~a" "C:\Users\...\Desktop\Temp\%%~nxa" 

这两个文件(批处理和txt)都在桌面上,所以我可以删除文本文件的路径吗?

@echo off 
FOR /F "delims=" %%a IN (list.txt) DO COPY "%%~a" "C:\Users\...\Desktop\Temp\%%~nxa" 

感谢您的帮助。

编辑:理念是获取文本文件中的文件位置,因此文本文件中的目录是变量。

+0

可能有[Batch:Copy a list(txt)of files](http:// stackoverflow。com/questions/6257948/batch-a-list-txt-of-files) – Trimax

+0

我看到了,Trimax,但它不一样。我不想设置源代码目录。我想将所有行(文件路径)复制到一个新文件夹中,所以源目录是可变的... – helderez

+0

要在保存批处理文件的目录中搜索文件,请使用'%〜dp0list.txt';只是使用'list.txt'表示'。\ list.txt'指向当前工作目录,这不一定是相同的... – aschipfl

回答

1
@echo off 
pushd "%userprofile%\Desktop" 
FOR /F "delims=" %%a IN (list.txt) DO COPY "%%~a" ".\Temp\%%~nxa" 
popd 

在上面的代码片断:

编辑。如果list.txt为空,或者只包含空行和标准分隔符,或者如果它以某些控制字符开始,则'for/F'循环上面不做任何事情。 NULL字符,或者是否它被利用UTF-16编码:保存

==> type null_and_data.txt 
1st line 
2nd 
3rd 

==> FOR /F "delims=" %a IN (null_and_data.txt) DO @echo "%~a" 

==> powershell -c "(type null_and_data.txt -Encoding byte -TotalCount 16) -Join ','" 
0,49,115,116,32,108,105,110,101,32,13,10,50,110,100,13 

==> 

一些上述情况(特别是,后者的一个)可以可以通过使用type command如下解决:

@echo off 
pushd "%userprofile%\Desktop" 
FOR /F "delims=" %%a IN ('type list.txt') DO COPY "%%~a" ".\Temp\%%~nxa" 
popd 

例如:

==> FOR /F "delims=" %a IN (fileUTF16LEBOM.txt) DO @echo "%~a" 

==> type fileUTF16LEBOM.txt 
x 
y 

==> FOR /F "delims=" %a IN ('type fileUTF16LEBOM.txt') DO @echo "%~a" 
"x" 
"y" 

==> 
+0

谢谢,JosefZ,但它不起作用。没有错误消息,但没有。 – helderez

+0

@helderez请参阅最新的答案。 – JosefZ

+0

谢谢,JosefZ。你是男人! – helderez

相关问题