我正在編寫一個小批次檔以將我的 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 無法確定「資料夾」是目錄還是文件,並假設它預設為文件。