批处理文件,用于从文本文件中复制文件列表

时间:2017-05-07 08:31:07

标签: list batch-file copy

我正在尝试制作批处理文件,将文件从文本列表复制到文件夹。代码已在此论坛中复制,但不起作用。

文本列表位于桌面上。

LIST.TXT

并包含,例如,

C:\用户... \桌面\测试\ item1.ipt
C:\用户\桌面\测试\ item2.ipt
C:\用户\桌面\测试\ item3.ipt
C:\用户\桌面\测试\ item4.ipt
C:\用户\桌面\测试\ item5.ipt
C:\用户... \桌面\测试\ 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"

感谢您的帮助。

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

1 个答案:

答案 0 :(得分:2)

@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"

==>