是否可以通过管道将文件列表传送到 Windows 上的 RMDIR?

是否可以通过管道将文件列表传送到 Windows 上的 RMDIR?

我正在为 Windows 命令提示符编写一个批处理文件,以删除所有与特定表达式匹配的目录。

我首先使用DIR它来返回与表达式匹配的目录的简单列表。我想将每行输出导入 RMDIR 命令,如下所示:

DIR *.delete /A:D /B /S | RMDIR /S /Q

但是上面的命令似乎不起作用。我不完全理解为什么它不起作用,如果有人能提供解释我将不胜感激。

答案1

您可以在批处理文件中使用以下内容:

FOR /f "tokens=*" %%a in ('dir *.delete /A:D /B /S') DO RMDIR /S /Q %%a

这将使用FOR命令循环遍历给定命令的输出(在本例中为dir *.delete /A:D /B /S,并且对于返回的每个项目,它将运行用 DO 语句指定的命令RMDIR /S /Q。该项目由变量引用%%a

无法简单地将DIR输出通过管道传输到 的原因RMDIR在于,您将整个输出(多行)作为单个参数一次性发送到RMDIR。该FOR命令会分解此输出,遍历每个项目,然后将其RMDIR逐一发送到 。

相关内容