我似乎无法让我的批处理文件仅复制.txt文件中列出的文件。
在源文件夹中有三个PDF文件。 它们是apple.pdf,bat.pdf和cow.pdf。
文本文件是两行,第一行包含bat.pdf,第二行包含cow.pdf。没有标点符号,空格或其他任何东西。
批处理,列表和两个文件夹都在我的桌面上。
@echo off
set src=C:\Users\weasel\Desktop\source
set dest=C:\Users\weasel\Desktop\dest
set list=C:\Users\weasel\Desktop\animallist.txt
for /f %%F in (%list%) do robocopy "%src%" "%dest%" *.pdf /R:1
我只希望复制列表中的动物,但是代码只是复制它可以找到的所有.pdf文件,就好像只有robocopy在那里一样。我最终在目标文件夹中放入了苹果,蝙蝠和牛。
我似乎搞砸了“(%list%)中的/ f %% F”部分,但是我真的不知道该编码,也找不到任何足以使我失望的在线内容
任何帮助将不胜感激。谢谢。
答案 0 :(得分:2)
您尚未在列表中包含该元变量。 *.pdf
的意思是“任何扩展名为.pdf的文件。”
请改用%%F*.pdf
-如果文件是%%F.pdf
,而您只想要该文件,则可以尝试jaguar.pdf
。
也请注意
使用语法SET "var=value"
(值可能为空)来确保分配的值中不包括任何杂散的尾随空格。
使用for /f "usebackq" %%F in ("%list%")
允许处理包含空格的文件名
使用for /f "delims=" %%F in (%list%)
允许将包含空格的数据行分配给%%F
使用for /f "usebackqdelims=" %%F in ("%list%")
将两者结合起来