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