1

我有一个包含 4000 个 .tif 图像的列表,我需要从包含 20,000 多个图像的文件夹中复制这些图像。

我正在尝试通过使用从谷歌搜索我的问题中找到的代码来使用命令提示符来执行此操作。

代码如下:

for /f %a in H:\list.txt do copy %a H:\new

"H:\list.txt" is my list file
"H:\new" is where i want my files to be copied to

我在包含 .tif 文件的文件夹中运行此命令,H:\Doc2并且不断收到:

H:\list.txt 此时出乎意料。

是什么导致了这个问题?我的列表设置不正确吗?

它看起来像这样:

ABBA.TIF
ABBD.TIF
ABBQ.TIF

文件名后是否需要逗号或冒号?

4

2 回答 2

2

H:\list.txt是一个文字,你想遍历文件的每一行。看一下这个:

如何使用 Windows 批处理文件遍历文本文件中的每一行?

for /F "tokens=*" %%A in (myfile.txt) do [process] %%A

建议:也用“windows”标记它。

于 2012-12-19T18:25:21.520 回答
2

Amir 诊断出您的直接问题 - 您的代码缺少 IN 子句周围的括号。

但是你还有另一个潜在的问题。您的列表可能包括文件名和/或包含空格或其他特殊字符的路径。如果是这样,则必须引用该名称。

列表中的值可能已经被引用,也可能没有。您可以使用~修饰符去除可能存在或不存在的任何现有封闭引号,然后显式添加您自己的。

for /f %a in (H:\list.txt) do copy "%~a" H:\new

如果要在批处理文件中包含该行,则%必须将每个行加倍为%%.

于 2012-12-19T19:01:25.313 回答