我已經尋找了解決方案,但這很奇怪,我無法準確找出問題所在。批處理文件無法正常工作,除非我正在觀看
我有一個批處理文件,看起來很簡單。在有兩個文件的目錄中,它應該刪除一個,複製另一個文件,然後將其重命名爲剛剛刪除的文件被命名的內容。除了重命名之外,一切都似乎正常工作。它幾乎看起來腳本運行兩次,但我找不到任何這方面的實際證據。請看下面:
SET filepath="\\server-name\directory with a space\"
SET oldFile=filename.csv
SET curFile=filename_*.csv
REM ===Delete current filename.csv===
IF EXIST %filepath%%oldFile% DEL %filepath%%oldFile%
REM ===Copy all versions of .csv files that begin with filename_ to the Archive folder===
IF EXIST %filepath%%curFile% COPY /y %filepath%%curFile% %filepath%%Archive
REM ===Rename the .csv file beginning with filename_ to filename.csv===
IF EXIST %filepath%%curFile% RENAME %filepath%%curFile% %oldFile%
如果我手動運行這個,它似乎工作正常。但是,當我讓它從計劃任務調用時,它似乎運行兩次...也就是刪除filename.csv,將文件名_ *。csv複製到正確的位置,但似乎刪除了第二個文件而不是重命名它。
正如我所說,我真的不清楚正在做什麼。我試着將結果記錄在輸出文件中,但內部沒有任何幫助。
任何人都可以看到我失蹤的任何東西嗎?
在此先感謝。
爲了測試,插入'echo%filepath %% oldFile%' - 它輸出'「\\ server-name \目錄的空格\」filename.csv' - 可能不是你想要的。 Magoo的答案顯示'set'的正確引用語法。 – zett42
非常感謝zett42,lit和Magoo幫助引用標記位置和更好的實踐。我覺得這很有幫助,即使最終它沒有完全解決根本問題。 :) – Night1505