如何从另一个命令的输出中删除文件夹

时间:2016-01-12 11:32:54

标签: batch-file cmd

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

dir "DeleteMe" /AD /s

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

1 个答案:

答案 0 :(得分:1)

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

@echo off
for /F "delims=" %%F in ('dir "*DeleteMe*" /AD /B /S') do rd /Q /S "%%F" 2>nul

命令 DIR 会返回,因为/AD因为/B因为当前目录中的/S以及因/S而导致的所有子目录而只有完整路径而没有引号的目录名称/Q

由于2>nul导致DeleteMe处于安静模式,因此所有文件和子目录都会通过命令 RD 删除这些目录。

命令 RD 输出到 stderr 的错误消息通过使用dir /?将其重定向到 nul 来抑制,如Microsoft文章中所述Using command redirection operators。这在此非常有用,因为当名称中包含echo /?的目录包含自己的子目录时,这些子目录也会由 DIR 返回,但之前已通过命令 RD 删除了因此产生从不感兴趣的错误消息。

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

  • for /?
  • rd /?
  • ()
  • var a = calc;