如何让forfiles搜索所有驱动器?

时间:2018-04-07 14:53:33

标签: windows batch-file cmd

我想创建一个批处理文件,该文件将从CD运行并删除所有名为" Caesar III"在系统的其余部分。我知道我可以使用dir命令查找文件夹。我使用forfiles命令在一个驱动器中删除这些文件夹。有没有办法告诉forfiles搜索和删除整个系统,除了CD-ROM驱动器?

2 个答案:

答案 0 :(得分:1)

假设我有如下文件夹结构。

C:\Test
   |__ folder1
   |       |__ folder11
   |             |__ temp
   |__ folder2
   |       |__ temp
   |__ folder3
           |__ temp

我可以使用命令找到名为'temp'的所有文件夹。

for /d /r "C:\Test" %d in (temp) do @if exist "%d" echo "%d"

输出将是。

"C:\Test\folder1\folder11\temp"
"C:\Test\folder2\temp"
"C:\Test\folder3\temp"

如果我想删除这些文件夹,请使用命令。

for /d /r "C:\Test" %d in (temp) do @if exist "%d" rd /s/q "%d"

如果要将其保存到bat文件,可以执行此操作

for /d /r "C:\Test" %%d in (temp) do @if exist "%%d" rd /s/q "%%d"

答案 1 :(得分:0)

您可以使用forfiles命令(尽管它的名称,它也可以找到/处理目录):

首先测试它会做你认为应该做的事情(因此" echo @ path"部分);使用/P ...指定起始目录:

forfiles /P C:\ /M "Caesar III" /S /C "cmd /c if @isdir==TRUE echo @path"

它只列出找到的目录。 然后,当确定它按预期工作时,将echo替换为rmdir /s /q

forfiles /P C:\ /M "Caesar III" /S /C "cmd /c if @isdir==TRUE rmdir /s /q @path"

(请注意,@path会扩展为带引号的字符串,因此您不需要额外的引号来说明路径中的空格。)

有关更多信息和帮助,请使用forfiles /?