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](…)] задает список файлы. Необходимо указать хотя бы один файл. каждый файл будет содержать строку поиска С каждой строки на отдельной строке в файле. Когда любая из строк соответствует любой части абсолютный путь к копируемому файлу, который будет исключен от копирования.