如何删除与其名称中的某个模式匹配的文件?

时间:2016-08-26 22:37:05

标签: batch-file filenames

我正在创建一个删除Rar$DIa0.???目录中所有%TEMP%个文件夹的批处理文件。

这可能,怎么做?

???是三个随机数。这就是我遇到问题的地方 - 删除名称中包含Rar$DIa0.的所有文件夹。

2 个答案:

答案 0 :(得分:1)

for /d仅适用于此类用途。这样的东西应该工作(如果你从命令行测试,删除%之一):

for /d %%i in ("%TEMP%\Rar$DIa0.???") do rd "%TEMP%\%%i"

/ d使它可以处理目录名而不是文件名。

如果您想让自己更轻松,请先更改为%TEMP%文件夹:

pushdir
cd /d %TEMP%
for /d %%i in ("Rar$DIa0.???") do rd "%%i"

???使其仅对.后有三个字母的文件夹起作用。如果您的文件夹不只有三个字母的扩展名,请将.???更改为.*。如果您有拼写错误,并且在foldername中没有实际的.,请将其删除并使用Rar$DIa0???Rar$DIa0*

您可能希望首先将rd更改为echo进行测试,以确保在实际删除之前获取所需的文件夹。

有关for(双关语)的更多信息,请在命令提示符下输入for /?

答案 1 :(得分:0)

在此任务的批处理文件中使用的命令行是:

@for /D %%I in ("%TEMP%\Rar$DIa0.*") do @rd /Q /S "%%I"

使用选项/D命令 FOR 在环境变量TEMP定义的文件夹中搜索文件夹名称以Rar$DIa0.开头但未设置隐藏或系统属性的子文件夹

循环变量I为每个找到的匹配此文件夹模式的子文件夹保存找到的文件夹的名称,其中包含没有双引号的完整路径,尽管临时文件夹的路径通常包含1个或多个空格。

由于这个原因,只有命令 RD ,参数/Q用于安静执行,/S用于删除,所有子文件夹也必须通过引用当前文件来调用用双引号括起来的循环变量I的值。

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • for /?
  • rd /?

顺便说一句: WinRAR 通常会自动删除临时文件夹,但在存档中打开文件以便在另一个应用程序中查看/修改它并且 WinRAR 已关闭在使用打开的文件退出其他应用程序之前。在这种情况下, WinRAR 无法删除临时解压缩文件的临时文件夹,因为该文件仍在另一个应用程序中打开。当然,如果此文件夹仍然是另一个应用程序的当前目录,或者该文件夹中的文件仍由另一个具有读/写访问权限的应用程序打开,那么命令 RD 也无法删除临时文件夹锁。