如何使一个batch file删除它自己的目录?

好吧,我很抱歉,我在这方面很新,但我试图让我的batch file在启动后删除它自己的目录。 这是我的文件夹如何安排:

  • 文件夹1
    • delete.bat

我的目标是在“delete.bat”启动后使“delete.bat”删除“Folder1”。 所以这是我的代码:

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

这似乎是可行的,但它只会删除“Folder1”的内容而不是整个目录本身。 我究竟做错了什么?

Solutions Collecting From Web of "如何使一个batch file删除它自己的目录?"

从rd的相应MSDN链接 :

您不能使用rmdir删除当前目录。 您必须首先更改到不同的目录(不是当前目录的子目录),然后使用rmdir和路径。

我想这是你的情况出了什么问题,因为批处理文件位于你要删除的目录中。

有些想法…

  • %~dp0得到批处理文件的驱动器和路径,所以你不需要包含..\Folder1
  • 你有什么应该工作。 如果不是删除文件夹本身,这意味着它被锁定,可能是因为cmd的当前文件夹是Folder1。 (这可能是猜测,但并不是它可能被锁定的唯一原因。)如果是cmd,则必须从Folder1之外的另一个文件夹中调用该批处理文件。
  • 虽然你有什么工作,当恢复不存在的批处理文件时,会导致一个有趣的错误:系统找不到指定的路径。 您可以在下面的解决方案中避免这一点。

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

这将创建一个新的进程来删除该文件夹(及其中的所有内容,包括批处理文件本身)。 小心。 =)