批次檔 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%”

然後觀察該命令產生的結果。

如果「資料夾」目錄的完整路徑是“C:\ABC\folder”,則 echo“%cd%”指令應產生輸出“C:\ABC”。但是,如果您看到與此不同的內容,那麼您的 XCOPY 命令會引發檔案未找到錯誤。這是正常的,因為 XCOPY 無法確定「資料夾」是目錄還是文件,並假設它預設為文件。

相關內容