воскресенье, 13 января 2013 г.

Ошибка XCOPY "Недопустимы путь". Использование русских символов в комманде XCOPY.

Команда виндовой консоли (cmd)  XCOPY гораздо лучше своего досовского собрата COPY тем, что позволяет копировать всё содержимое папки с подпапками, что не заменимо при написании bat-файлов для задач резервного копирования. И, если описание этой команды найти не сложно (например, тут), то описание ошибок практически невозможно.
Обычно после написания первого скрипта мы получаем ошибку "Недопустимый путь".
Вызвана она может быть следующими причинами (в продолжении):


  • Русские символы в пути. Дело в том, что по умолчанию консоль работает с кодировкой OEM 866 , а блокнот c ANSI (windows 1251 для руссифицированной винды). Лечится указанием кодировки в начале скрипта chcp 1251 .Единственный минус - на нормальный вывод русских букв после этого без танцев с бубном не надейтесь (он-то по прежнему будет в oem-866).
  • Пробелы в пути. Если путь содержит пробелы, то его обязательно заключать в двойные кавычки "". Да и вообще, проще выработать привычку всегда заключать путь в кавычки в команде xcopy.
  • Отсутствует маска файла. Еще одна распространенная ошибка: если надо копировать все содержимое папки, то маску все-равно надо задавать! В следующем виде: "*.*" Если путь заключён в кавычки, то делать это надо следующим образом: маска файла указывается после закрытия кавычки.
Пример:
chcp 1251
xcopy "c:\Работа\"*.* "d:\Резервная копия\" /Y /H


Данный bat -файл скопирует все содержимое папки c:\Работа\ в d:\Резервная копия\ со скрытыми и системными файлами и перезаписью существующих.

7 комментариев: