我正在使用以下命令列出一些目录:
dir /b /s /AD > c:\temp\dir_list.txt
这给了我几乎所需的清单.但是这是太多的数据,因为一些文件夹有很多子文件夹,我不想在我的列表中看到.
是否可以将命令的递归深度限制为-lets说-3?
c:\dir_1\dir_2\dir_3\dir_foo
所以如果我在上面的例子中执行命令c:>我不想看到dir_foo目录,只是dir_n的目录
也许没有批处理/ vb脚本?
我确定可以编写一个复杂的命令来列出n级目录.但是很难记住语法和错误.每次你想要更改级别的数量也需要改变.
原文链接:https://www.f2er.com/windows/364045.html更好地使用一个简单的脚本.
编辑5年后 – 实际上,自Vista以来就有一个简单的一个班轮. See my new ROBOCOPY solution.
这是一个执行深度优先列表的批处理解决方案. DIR / S命令执行广泛的第一个列表,但我更喜欢这种深度第一格式.
@echo off setlocal set currentLevel=0 set maxLevel=%2 if not defined maxLevel set maxLevel=1 :procFolder pushd %1 2>nul || exit /b if %currentLevel% lss %maxLevel% ( for /d %%F in (*) do ( echo %%~fF set /a currentLevel+=1 call :procFolder "%%F" set /a currentLevel-=1 ) ) popd
广泛的第一个版本几乎是一样的,除了它需要一个额外的FOR循环.
@echo off setlocal set currentLevel=0 set maxLevel=%2 if not defined maxLevel set maxLevel=1 :procFolder pushd %1 2>nul || exit /b if %currentLevel% lss %maxLevel% ( for /d %%F in (*) do echo %%~fF for /d %%F in (*) do ( set /a currentLevel+=1 call :procFolder "%%F" set /a currentLevel-=1 ) ) popd
两个脚本都有两个参数:
arg1 =要列出的根目录的路径
arg2 =要列出的级别数.
所以要列出当前目录的3个级别,可以使用
listDirs.bat . 3
要列出不同目录的5个级别,可以使用
listDirs.bat "d:\my folder\" 5