我有一个案例,我必须移动超过15,000个文件。有许多重复,所以我通过MD5解析它们,现在我在输入文件(files.txt)中有一个文件名列表。 我想从中读取,然后将列出的文件复制到新目录。 我拉了一个旧的批处理,有人写了一个由两部分组成的简单脚本并对其进行了修改。
适用于没有空格的文件。如何才能涵盖所有文件名? 另外,我不能将所有这些都放在一个文件中吗?
Cstart.bat:
for /f %%x in (files.txt) do call copyfiles.bat
copyfiles.bat:
set filename=%1
copy "C:\temp\%filename%" "C:\temp\pruned files\"
答案 0 :(得分:1)
您当前的代码甚至没有将filename
传递给copyfiles.bat
,因此它无法使用或不使用空格。 (如果您需要确认,请在echo %1 %filename & pause
的{{1}}行之前添加copy
并运行copyfiles.bat
。
话虽如此,您可以轻松地在一个文件中完成所有操作:
cstart.bat
要确保它有效,只需将上面一行中的for /f %%x "tokens=1 delims=*" in (files.txt) do copy "C:\Temp\%%x" "C:\Temp\pruned files\%%x"
替换为copy
,然后从命令提示符处运行它。
我使用包含以下内容的名为echo
的文本文件对此进行了测试:
test.txt
包含名为One.txt
Two.txt
Three.txt
And Four.txt
的批处理文件,其中包含:
testcopy.bat
上述测试显示了这个输出:
@echo off
for /f "tokens=1 delims=*" %%x in (test.txt) do echo "C:\Temp\%%x" "C:\Temp\test this\%%x"
答案 1 :(得分:0)
for /f "usebackqdelims=" %%x in ("my file list.txt") do copy "C:\temp\%%~x" "C:\temp\pruned files"