2016-04-14 33 views
0

刪除自身此批處理腳本應該映射到PC,並使用日期&時間戳重命名文件夾中的文件,並將其複製到其他位置不同的PC上。然後它應該刪除該文件夾中除了名爲「LBBS.log」的文件以外的所有文件。除了刪除部分,它一切正常。它不會刪除文件夾中的任何內容,而是實際刪除批處理文件本身。當我運行它時,它複製的很好,但是它會自行刪除。有人可以告訴我,我需要改變這個工作。我錯過了什麼?它在Windows 7環境中。提前致謝。腳本被錯誤地

net use x: \\MTLLBBS023\C$ 
set "stamp=%date:~4,2%%date:~7,2%%date:~10,4%%time:~0,2%%time:~3,2%%time:~6,2%" 
set "source=MTLLBBS023" 
xcopy /S /E /I x:\logs E:\Data\Logs\MTLLBBS023\%source%-%stamp%.* 
cd x:\Logs 
for %%i in (*) do if not %%i == LBBS.log del %%i 
net use x: /delete 

回答

2

問題是您的腳本和目標目錄位於單獨的驅動器上。

當您將cd複製到另一個目錄時,如果嘗試移動到另一個驅動器而不使用/d選項,則該命令將失敗。

相反的cd x:\logs,你應該說cd /d x:\logs - 這將改變驅動器和目錄。

或者,而不是net usenet use delete的命令,你可以簡單地pushd \\MTLLBBS023\C$去網絡驅動器(這也將自動創建一個臨時的網絡驅動器),然後popd在腳本的末尾留下的目錄,並刪除映射驅動器。這樣,你根本不需要cd

+0

Ty for answer。直到現在我還沒有能夠測試這個,我在腳本的最後得到了許可。我正在使用cd/d x:\ logs根據您的建議。 在「net use x:/ delete」之後,它會顯示: 「在x:的連接上存在未解決的打開文件和/或未完成的目錄搜索。 繼續斷開連接並強制它們關閉是可以的嗎? [N] :「 爲什麼它告訴我有沒有打開的文件,如何才能讓它忽略並關閉連接?非常感謝你的幫助。 – Sammi8796