請注意,我錯誤的假設,我應該用%~dp0%
擺脫它裏面不包括批處理文件的文件名的路徑。我現在正在離開這個問題,因爲我看到其他人有着同樣錯誤的前提。查看接受的答案及其評論,以獲取更多信息。複製文件不起作用
由於很多更高級的Windows用戶知道在批處理文件中表達%~dp0%
將進行評估,以批處理文件的目錄包括尾部的反斜槓。
如果我有一個D:\
包含echo %~dp0%
的批處理文件,該行將按預期行爲並輸出D:\
。
問題
如果我創建一個文件D:\FILETOCOPY.txt
和批處理文件D:\problem.bat
有以下內容:它
@ECHO OFF
copy D:\FILETOCOPY.txt %userprofile%\FILECOPIEDA.txt
copy %~dp0%FILETOCOPY.txt %userprofile%\FILECOPIEDB.txt
set Evaluated=%~dp0%FILETOCOPY.txt
copy %Evaluated% %userprofile%\FILECOPIEDC.txt
cmd.exe
我得到這個輸出,當我運行它(雙擊):
1 file(s) copied.
The system cannot find the path specified.
1 file(s) copied.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
D:\>
並且文件%userprofile%\FILECOPIEDB.txt
從目的地丟失ñ。它確實有效,如FILECOPIEDC.txt
所證明的,如果我在單獨的行上評估%~dp0%
。似乎它以某種方式弄亂了文件副本,但它在回顯行中間按預期工作。
究竟這到底是怎麼回事呢?
更改三次調用'copy'到'echo'代替,並運行該批處理文件。仔細觀察輸出,特別是第二個「回聲」。你看到兩個單獨的陳述(如第一個和第三個)? –