Пакетный файл XCOPY не может найти существующий каталог
Я пишу небольшой командный файл, чтобы скопировать мой проект C# на другой диск. я использую XCOPY
скопировать всю папку (у нас есть еще несколько машин XP, так robocopy
не вариант). Однако, когда я запускаю командный файл, он говорит мне, что не может найти указанный ФАЙЛ (почему он ищет файл, а не папку, которую я не имею понятия).
Вот моя структура папок. Я хотел бы скопировать folder
к program\dst
папка на O
привод.
src
-folder
-batchFile.bat
O
-program
--dst
Мой batchFile.bat содержит следующую строку
XCOPY ".\folder" "O:\program\dst" /E
Когда я запускаю это, он говорит:
File Not Found - folder
даже при том, что это наиболее определенно существует (как папка, а не файл).
1 ответ
Как показывают другие ответы, используя
.\folder
начинается с текущего каталога, а вам нужно расположение командного файла:
XCOPY "%~dp0\folder" "O:\program\dst" /E
Вы могли
cd
сначала в папку, но это более элегантный ИМО.
Я попробовал это, и это работает для меня. Я предполагаю, что вы создали ярлык для командного файла, а начальный каталог неверен. Если это так, добавив cd
Команда в начале командного файла, чтобы изменить каталог в src
следует исправить это, или в качестве альтернативы использовать абсолютный путь к folder
вместо относительного:
cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E
или же
XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E
В вашем скрипте поместите следующую команду в самое начало вашего файла CMD:
эхо "%cd%"
Затем посмотрите, что производит эта команда.
Если полный путь к каталогу "папка" - "C:\ABC\folder", то команда echo "%cd%" должна выдать результат "C:\ABC". Однако, если вы видите что-то отличное от этого, ваша команда XCOPY запускает ошибку "файл не найден". Это нормально, потому что XCOPY не может определить, является ли "папка" каталогом или файлом, и предполагает, что это файл по умолчанию.