Почему xcopy не копирует файлы при использовании этих параметров? - PullRequest
5 голосов
/ 03 марта 2011

У меня есть простой скрипт xcopy, который я запускаю из командной строки, который читает CSV-файл каталогов и имен файлов. Я использовал очень похожий скрипт без проблем раньше. Вот скрипт:

Z:\HOME\>for /f "delims=, tokens=1,2,3,4" %i in (Z:\HOME\MissingImages.csv) do
echo f | xcopy "Y:\%j\%k\%l" "C:\Horizon\%j\%k\%l" >> Z:\HOME\MissingImagesLog.txt

Однако он не копирует файлы Вот запись из файла журнала:

Does C:\Horizon\K\00\6bef500f.IMG  specify a file name
or directory name on the target
(F = file, D = directory)? f
0 File(s) copied

Он находит изображения, потому что, если я изменю корневой каталог на что-то другое, скрипт просто заполнит файл журнала 0 File(s) copied для всех записей, так что файлы есть и их можно увидеть ...

Кроме того, диск Z:\ находится в сети, а не в локальной сети, но, опять же, я без проблем использовал очень похожий сценарий в сети (это занимает больше времени).

Я пробовал разные варианты, такие как /i, /s и т. Д., Но я не могу заставить его скопировать какие-либо файлы.

Ответы [ 3 ]

11 голосов
/ 20 сентября 2012

xcopy также сообщит 0 File(s) copied, если вы используете прямую косую черту "/" в путях вместо обратной косой черты "\", но ТОЛЬКО если вы заключили путь в кавычки.

  1. Сбой «0 скопированных файлов»

    xcopy "pathname1/file" pathname2\file
    
  2. Сбой «Неверное количество параметров»

    xcopy pathname1/file pathname2\file
    
  3. Это прекрасно работает

    xcopy pathname1\file pathname2\file
    
1 голос
/ 03 марта 2011

Ну, это раздражает; Я нашел проблему. Похоже, что когда я генерировал свой CSV-файл, в конце каждой строки он ставил пробел, поэтому xcopy искал файлы, у которых после расширения был пробел.

Меня поразило то, что он находил файлы, но не мог их скопировать, заставляя меня думать, что это проблема сети или xcopy.

Я только что запустил скрипт sed для удаления пробелов eol, и скрипт xcopy теперь работает как положено.

1 голос
/ 03 марта 2011

Он спрашивает, потому что не знает, хотите ли вы скопировать в каталог (будет создан) или вы указали полный целевой путь.Это спросит:

xcopy pathname1\file.from pathname2\file.to

Однако добавление косой черты скажет, что вы копируете в каталог:

xcopy pathname1\file.from pathname2\to\

Но я не нашел способа явно сказать, что я хочу скопироватьи переименуйте файл, кроме

echo Y | xcopy pathname1\file.from pathname2\file.to

Я немного поиграл с вашим делом (с для , do и xcopy ) и выяснилчто даже если он запрашивает Указывает ли SOMEFILE имя файла или имя каталога на целевом объекте (F = файл, D = каталог)? ему предоставляется f из echo и успешно скопировано.Таким образом, проблема заключается не в указании файла / каталога, а в копировании через саму сеть.

...