for循环和xcopy创建模仿文件名的文件夹的问题?

时间:2016-10-24 15:38:51

标签: windows batch-file cmd scripting xcopy

我正在尝试使用for循环和xcopy命令将一组文件复制到我在文件列表(filelist.txt)中列出的新位置。但是,我的脚本存在一个问题,即创建了一个具有相同文件名的目录。

例如,我在filelist.txt

中有以下内容
MC\1807\1807-06-10\M-1807-00246071.tif
BC\1825\18250218\B-1825-00000012-0.tif
BC\1837\18370727\B-1837-00000013-0.tif
MC\1848\1848-08-04\M-1848-00000007.tif
MC\1849\1849-02-24\M-1849-00000008.tif

命令行执行如下所示:

for /f "delims=" %i in (filelist.txt) do echo D|xcopy "E:\files\%i" "F:\files\%i" /i /z /y

注意我正在从E复制到F驱动器。所以在E上,文件存储如下:

E:\files\MC\1807\1807-06-10\M-1807-00246071.tif
E:\files\BC\1825\18250218\B-1825-00000012-0.tif
E:\files\BC\1837\18370727\B-1837-00000013-0.tif
E:\files\MC\1848\1848-08-04\M-1848-00000007.tif
E:\files\MC\1849\1849-02-24\M-1849-00000008.tif

运行xcopy命令后,我收到了这个结果集:

F:\files\MC\1807\1807-06-10\M-1849-00000008.tif\M-1807-00246071.tif
F:\files\BC\1825\18250218\M-1849-00000008.tif\B-1825-00000012-0.tif
F:\files\BC\1837\18370727\M-1849-00000008.tif\B-1837-00000013-0.tif
F:\files\MC\1848\1848-08-04\M-1849-00000008.tif\M-1848-00000007.tif
F:\files\MC\1849\1849-02-24\M-1849-00000008.tif\M-1849-00000008.tif

注意它是如何创建一个包含文件名的文件夹,然后然后将文件放在该文件夹中,而不是从源目录到目标目录的直接复制。

我的xcopy命令中有什么可能导致此问题?

1 个答案:

答案 0 :(得分:0)

我明白了。执行复制时,它会提示您是目录(D)还是文件(F)。在我的回音中,我回来了D:

for /f "delims=" %i in (filelist.txt) do echo D|xcopy "E:\files\%i" "F:\files\%i" /i /z /y

通过将其更改为回显F,这已得到解决。

for /f "delims=" %i in (filelist.txt) do echo F|xcopy "E:\files\%i" "F:\files\%i" /i /z /y