Batch file 如何从其他命令的输出中删除文件夹

Batch file 如何从其他命令的输出中删除文件夹,batch-file,cmd,Batch File,Cmd,我正在尝试删除此命令带回的文件夹 dir "DeleteMe" /AD /s 如何获取该文件的输出并删除这些目录?使用文件夹名称中的DeleteMe删除当前文件夹中所有子文件夹的简单任务,可以使用具有以下两行的批处理文件完成: @echo off for /F "delims=" %%F in ('dir "*DeleteMe*" /AD /B /S') do rd /Q /S "%%F" 2>nul 由于/AD的原因,命令DIR只返回当前目录中具有完整路径且不带引号的目录名,而由于/

我正在尝试删除此命令带回的文件夹

dir "DeleteMe" /AD /s

如何获取该文件的输出并删除这些目录?

使用文件夹名称中的
DeleteMe
删除当前文件夹中所有子文件夹的简单任务,可以使用具有以下两行的批处理文件完成:

@echo off
for /F "delims=" %%F in ('dir "*DeleteMe*" /AD /B /S') do rd /Q /S "%%F" 2>nul
由于
/AD
的原因,命令DIR只返回当前目录中具有完整路径且不带引号的目录名,而由于
/S
的原因返回所有子目录名

由于
/S
处于安静模式,由于
/Q
,因此通过命令RD删除这些目录以及所有文件和子目录

通过使用
2>nul
将命令RD输出到stderr的错误消息重定向到nul,可以抑制这些错误消息。这在这里很有用,因为当名称为
DeleteMe
的目录包含其自身的子目录时,这些子目录也会由DIR返回,但之前已由命令RD删除,因此会产生不感兴趣的错误消息

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • dir/?
  • echo/?
  • 获取/?
  • rd/?

当您认为“我需要根据
命令b
的输出执行
命令a
时,立即想到管道,或
for
loops@Arescet,如果以下命令在STDIN通道获取数据,管道就可以工作,因此它可以从前面命令的STDOUT通道接收数据。。。