Проблемы с циклами for и xcopy, создающими папки, имитирующие имена файлов?

82
11

Я пытаюсь скопировать набор файлов в новое место, которое я указал в списке файлов (filelist.txt), используя команду for и команду xcopy. Тем не менее, есть проблема с моим скриптом, где создается каталог с идентичным именем файла.

Например, у меня есть файл 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 может привести к этому?

спросил(а) 2016-10-24T18:38:00+03:00 4 года назад
1
Решение
107

Я понял. Когда вы делаете копию, она запрашивает, является ли она каталогом (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

ответил(а) 2016-10-24T18:49:00+03:00 4 года назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема