【问题标题】:Deleting all files and folders except a file using batch使用批处理删除除文件之外的所有文件和文件夹
【发布时间】:2018-03-14 12:54:10
【问题描述】:

制作一个批处理文件,删除当前目录中的所有文件,然后关闭计算机。 使用它来删除 -

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

问题是 .bat 删除自身并且不执行关机命令。 我必须确保删除所有文件、文件夹和快捷方式。

还告诉我是否有其他方法可以删除桌面上的所有文件。我想让这个程序在另一台电脑上运行,这意味着我不能使用 -

delete C:\Users\DELL\Desktop\*

虽然这样也不会删除所有文件夹。

【问题讨论】:

  • 为什么要切换到当前目录??无论如何,您可以查看if command 以从删除中排除当前批处理文件的路径,该路径可以通过%~nx0 检索...
  • @aschipfl 想删除桌面上的所有文件。如果您有更好的方法,请回答。
  • 你已经在current目录中,所以你不必改变它,这就是我要指出的。我想您想更改为批处理文件所在的目录;如果是这样,请使用cd /D "%~dp0."。要实现我已经暗示过的异常......
  • 无法调用关闭,因为您的脚本没有执行此操作的命令。请在您的问题中发布其余的脚本内容,或者至少发布足够多的内容,以便您的问题不会变得模棱两可,并且我们难以为您提供相关帮助。如果你在命令提示符下输入delete /?,你就会明白为什么它不起作用了!如果您输入erase /?del /?,您将看不到任何有关删除文件夹的信息,您应该知道这一点,因为您已经表明您知道RmDir 命令。
  • 您可以使用一个环境变量来获取当前用户配置文件目录,该目录将帮助您导航到用户桌面文件夹。打开 cmd 提示符并输入:set.

标签: batch-file


【解决方案1】:

你可以试试

<"%~f0" rmdir . /s /q

这只是从当前活动目录开始的递归目录删除(首先更改为所需的目录),但由于我们对批处理文件进行了活动重定向,因此无法删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    • 2012-11-11
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2011-10-13
    相关资源
    最近更新 更多