【问题标题】:Batch file that would delete all the files and folders that the batch file is located in?批处理文件会删除批处理文件所在的所有文件和文件夹?
【发布时间】:2015-02-25 16:10:19
【问题描述】:

是否可以制作一个批处理文件来删除批处理文件所在的所有文件和文件夹?

IE:我将批处理文件放入包含无用文件的文件夹中,我运行它,它会删除该文件夹中的所有文件和文件夹。

然后我可以将批处理文件移动到另一个文件夹并在那里做同样的事情......

真的可以帮到我!在安装新文件之前,我需要这个来删除其他人计算机上的临时文件......但遗憾的是我对批处理不太熟悉。

【问题讨论】:

  • 是的,这是可能的。你有没有做过任何尝试?您应该首先发布您的尝试(代码),如果您无法使其正常工作,那么我们将为您提供帮助。如果您对批处理文件一无所知,那么您应该先了解它们(即 Google),然后再将代码放在您无法支持的用户机器上。
  • 你关心隐藏文件吗?这似乎是一个单行 rmdir 或 del 命令就可以了。
  • 同一个批处理文件呢,也应该删除吗?
  • @Pa 没关系,很可能,是的。如果不可能,那也没什么大不了的!我只需输入一行代码就可以通过我的程序来完成 :)
  • @rickS No man :( 我知道如何创建批处理文件...我知道一些 CMD 命令,但我对批处理本身的了解不多。

标签: file batch-file cmd directory delete-file


【解决方案1】:

要删除当前目录中除批处理文件之外的所有文件,请使用:

echo off
for %%i in (*.*) do if not "%%i"=="del.bat" del /q "%%i"

请注意,“del.bat”是您将其保存为的批处理文件的名称。

作为另一个说明,您可以在 del /q 之后添加“/p”命令以使其更安全一些。这样,它会在删除每个文件之前提示您。

要删除文件夹中的所有内容,包括 .bat 文件,请使用

for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

要删除所有内容,包括除 .bat 文件以外的文件夹,请使用

for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || if not "%%i"=="del.bat" del "%%i" /s/q) 

其中 del.bat 是您的批处理文件名。

【讨论】:

  • 非常感谢!但是有一个小问题,我也需要它来删除所有文件夹:o 这可能吗?
  • 复制for循环,但使用rmdir /S而不是del*而不是*.*,我认为它也会删除所有文件夹。
  • 添加了从文件夹中删除所有文件的更改,包括批处理文件本身。
  • 嗯,看起来像这样: echo off for %%i in (*) do if not "%%i"=="del.bat" rmdir /S "%%i".. . 现在,当我运行它时,会打开一个 CMD,给我当前目录,并询问“你确定 Y/N” - 我按“Y”,CMD 消失,但没有任何反应!
  • @RandyRakestraw 谢谢老兄!你应该得到一枚奖牌......不,2枚奖牌:)或3枚:P你帮了我很多:)