Пакетный файл XCOPY не может найти существующий каталог

Пакетный файл 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  "%~dp0folder" "O:\program\dst" /E

Можно cdсначала перейти в папку, но, на мой взгляд, так будет элегантнее.

решение2

Я попробовал это, и это работает для меня. Я предполагаю, что вы создали ярлык для пакетного файла, и начальный каталог неверный. Если это так, добавление команды cdв начало пакетного файла для смены каталога srcдолжно исправить это, или альтернативно используйте абсолютный путь folderвместо относительного:

cd "C:\Whatever\src"
XCOPY ".\folder" "O:\program\dst" /E

или

XCOPY "C:\Whatever\src\folder" "O:\program\dst" /E

решение3

В вашем скрипте поместите следующую команду в самое начало вашего CMD-файла:

эхо "%cd%"

Затем посмотрите, что производит эта команда.

Если полный путь к каталогу "folder" - "C:\ABC\folder", то команда echo "%cd%" должна выдать "C:\ABC". Однако, если вы видите что-то другое, то ваша команда XCOPY выдает ошибку "файл не найден". Это нормально, поскольку XCOPY не может определить, является ли "folder" каталогом или файлом, и предполагает, что по умолчанию это файл.

Связанный контент