Пакетный файл 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 не может определить, является ли "папка" каталогом или файлом, и предполагает, что это файл по умолчанию.

Другие вопросы по тегам