xcopy возвращает ошибку "недопустимое количество параметров" при установке параметра exclude
выпуска:
xcopy X: "Y:...bin76543210" /c /g /d /i /e /r /h /y
работает, как ожидалось. Однако:
xcopy X: "Y:...bin76543210" /c /g /d /i /e /r /h /y /exclude:"Y:...exclude.txt"
возвращает ошибку:
недопустимое количество параметров
что также происходит, когда имена путей (содержащие пробелы) не заключены в кавычки. Однако это не так. Пути (отредактированные для удобства чтения) все соответствуют правильно. Синтаксис (согласно Документация По Продукту-Xcopy) это тоже правильно. Относительно ОС Windows XP Профессиональный x32 SP3.
почему второй cmd возвращает ошибку и как ее решить? Я не ищу альтернативы xcopy(robocopy и т. д.).
2 ответов
XCOPY-это старая команда, возвращающаяся ко временам DOS. Похоже, параметр /EXCLUDE никогда не обновлялся для поддержки длинных имен файлов. Тьфу :-(
Если удалить кавычки, то текст после пробела интерпретируется как дополнительный параметр, и вы получаете ошибку "недопустимое количество параметров". Если вы сохраняете кавычки, то он обрабатывает кавычки как часть пути и сообщает, что не может найти файл.
Я верю, что у вас есть три возможных решения:
1) Используйте короткие имена папок 8.3 в вашем пути.
конечно, это не может работать, если ваш объем имеет короткие имена отключить.
2) используйте команду SUBST для создания псевдонима диска для вашего проблемного пути.
subst Q: "Y:\path with spaces"
xcopy X:\ "Y:\...\bin76543210\" /c /g /d /i /e /r /h /y /exclude:Q:exclude.txt
subst Q: /d
Это может быть проблемой, если вы не знаете букву диска, которая является бесплатной.
3) (Мой любимый) просто PUSHD сделать хлопотный путь и запустить команду из там : -)
pushd "Y:\path with spaces"
xcopy X:\ "Y:\...\bin76543210\" /c /g /d /i /e /r /h /y /exclude:exclude.txt
popd
Смотри https://sevenx7x.wordpress.com/2009/01/02/xcopy-with-exclude-option-shows-cant-read-file/ и http://forums.majorgeeks.com/showthread.php?t=54300 для получения дополнительной информации.
/EXCLUDE:file
switch не исключает указанный файл. Согласно xcopy
команд:
/exclude:FileName1[+[FileName2][+[FileName3](…)]
задает список файлы. Необходимо указать хотя бы один файл. каждый файл будет содержать строку поиска С каждой строки на отдельной строке в файле. Когда любая из строк соответствует любой части абсолютный путь к копируемому файлу, который будет исключен от копирования.