我正在寻找一个可以添加到我使用的批处理中的命令行。
这是我需要能够做的事情:
假设我有一个目录:
C:\Users\username\Videos
带有子目录
C:\Users\username\Videos\test\sample
C:\Users\username\Videos\test2\sample
我需要使用什么命令来删除两个子目录中的示例文件夹,而不是 test/test2 文件夹?
如果您知道使用 RMDIR 的方法,那就太好了,但如果不是,我愿意接受想法。
我正在寻找一个可以添加到我使用的批处理中的命令行。
这是我需要能够做的事情:
假设我有一个目录:
C:\Users\username\Videos
带有子目录
C:\Users\username\Videos\test\sample
C:\Users\username\Videos\test2\sample
我需要使用什么命令来删除两个子目录中的示例文件夹,而不是 test/test2 文件夹?
如果您知道使用 RMDIR 的方法,那就太好了,但如果不是,我愿意接受想法。
关于什么:
for /f %i in ('dir /b/s/ad ^| findstr -I "\Sample$"') do rmdir %i
这会为 Sample 目录执行递归目录列表和过滤器,然后获取列表并删除每个目录。如果要将其放入批处理文件中,则需要将每个 % 加倍,如下所示:
for /f %%i in ('dir /b/s/ad ^| findstr -I "\Sample$"') do rmdir %%i
命令
dir /b /s /ad "C:\Users\username\Videos\sample"
将生成要删除的文件夹列表。现在,为了处理这个列表,我们将命令包装在一个for /f
命令中,该命令将为上一个命令的输出中的每一行执行目录删除命令
@echo off
setlocal enableextensions disabledelayedexpansion
for /f "delims=" %%a in ('
dir /b /s /ad "C:\Users\username\Videos\sample"
') do rd /s /q "%%a"
或者,从命令行使用它
for /f "delims=" %a in ('dir /b /s /ad "C:\Users\username\Videos\sample"') do rd /s /q "%a"
在这两种情况下,for /f
都会遍历dir
命令的输出行,将行存储在其可替换参数中%a
并执行do
子句之后的代码。
for
命令的默认行为是使用空格和制表符作为分隔符对输入行进行标记。要禁用此行为
delims=
子句,请使用:没有分隔符,只有一个标记包含整行。