2016-11-16 132 views
3

好的,我很抱歉,我對此非常感興趣,但我試圖讓我的批處理文件在啓動後刪除它自己的目錄。這是我的文件夾的方式安排:如何讓批處理文件刪除它自己的目錄?

  • Folder1中
    • delete.bat

我的目標是後「刪除,使 「delete.bat」 刪除 「Folder1中」。蝙蝠「已經啓動。因此,這裏是我的代碼:

rd /s /q %~dp0..\Folder1 

這似乎是它的工作,但它只是刪除「Folder1中」的內容,而不是整個目錄本身。我究竟做錯了什麼?

+0

'rmdir/s/q%〜dp0 .. \ Folder1' – Codexer

+0

'rd/s/q%〜dp0'%〜dp0'是批處理文件夾的路徑。 – 2016-11-16 05:49:55

回答

1

從RD相應MSDN link

不能使用rmdir來刪除當前目錄。您必須先更改到不同的目錄(不是當前目錄的子目錄),然後使用rmdir和路徑。

我想這是你的情況出了什麼問題,因爲批處理文件位於你要刪除的目錄中。

2

一些想法...

  • %~dp0得到批處理文件的驅動器和路徑,這樣你就不會需要包括..\Folder1
  • 你應該有什麼工作。如果它不刪除文件夾本身,則表示它已被鎖定,可能是因爲cmd的當前文件夾是Folder1。 (這可能是猜測,但並不是它可能被鎖定的唯一原因。)如果它是cmd,則必須從Folder1之外的另一個文件夾中調用該批處理文件。
  • 雖然你有什麼工作,當恢復不存在的批處理文件時,會導致一個有趣的錯誤:系統找不到指定的路徑。您可以在下面的解決方案中避免這一點。

一個很好的解決方案:start /b "" cmd /c rd /s /q "%~dp0"

這將創建一個新的進程刪除(在它和一切,包括這個批處理文件)的文件夾。小心。 =)

+0

您還沒有從另一個文件夾調用批處理。你可以在批處理腳本中'cd'%〜dp0..',以保證你的當前目錄不同於folder_1。 – dbenham

+0

這個新字符串究竟做了什麼?自從我試圖使用它以來,通常工作的進程中的語法錯誤我不確定這是否是原因,但如果是這樣,是否有辦法將其反轉? –

相關問題