2016-11-16 131 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

这个新字符串究竟做了什么?自从我试图使用它以来,通常工作的进程中的语法错误我不确定这是否是原因,但如果是这样,是否有办法将其反转? –

相关问题