欢迎各位兄弟 发布技术文章
这里的技术是共享的
for /r
命令在 DOS(或 CMD)环境下确实可以递归遍历目录及其子目录,但它默认是根据指定的模式匹配文件。如果你想要遍历目录本身而不是文件,你需要显式地指定对目录进行操作。
例如,如果你想列出所有子目录但不包括文件,你可以使用如下方式:
cmd 仅仅遍历目录for /d /r C:\example %%d in (*) do echo %%d
在这里,
/d
参数表示 for
命令将只处理目录名。
/r
参数依然用于递归遍历子目录。
%d
将被替换为每个找到的子目录名。
如果你想同时遍历文件和目录,你可能需要写两个独立的 for /r
循环,一个针对文件,另一个针对目录。
下面的代码也是只遍历目录 ,不遍历文件,in (*)表示当前目录,也可以写成 in (./*)
我再次澄清,for /r
命令在不使用 /d
参数时确实会遍历子目录,并且查找子目录下的文件。例如:
cmdfor /r C:\example %%f in (*.txt) do echo %%f #所有txt文件
for /r C:\example %%f in (*) do echo %%f #所有文件
这条命令将会递归地查找 C:\example
及其所有子目录下所有的 .txt
文件,并将每个找到的文件路径输出。
若要只遍历子目录而不是文件内容,应像之前所述那样添加 /d
参数:
cmdfor /d /r C:\example %%d in (*) do echo %%d
这里, %d
将替换为在 C:\example
目录及其所有子目录中找到的每一个子目录的名字。