我正在尝试制作批处理文件,将文件从文本列表复制到文件夹。代码已在此论坛中复制,但不起作用。
文本列表位于桌面上。
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是获取文本文件中的文件位置,因此文本文件中的目录是变量。
答案 0 :(得分:2)
@echo off
pushd "%userprofile%\Desktop"
FOR /F "delims=" %%a IN (list.txt) DO COPY "%%~a" ".\Temp\%%~nxa"
popd
在上面的代码段中:
pushd
command:更改当前目录/文件夹并存储上一个文件夹/路径以供POPD
命令使用。%userprofile%
是standard (built-in) Environment Variable ".\Temp\%%~nxa"
中的句点是directory component in a path representing the current directory。因此,".\Temp\%%~nxa"
与"Temp\%%~nxa"
具有相同的效果。POPD
命令:Change directory back to the path/folder most recently stored by the PUSHD
command。 修改即可。如果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
==>
以上某些场景(特别是后者)可以3>使用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"
==>