我试图只显示目录中的文件夹。
例子C:/Test/Game1
。
在qazxsw poi有qazxsw poi文件夹,qazxsw poi,qazxsw poi。但是文件夹Game1
,folder1
和folder2
中有更多文件夹,我不想展示。
我使用过folder3
,但它出现了错误
1
所以,你想要的是以2
格式打印文件夹中的所有目录(当然是ASCII字符)。受到aschipfl解决方案的启发,我提出了相反的解决方案:
3
实际上-maxdepth 1
es线不包含字符串Too many parameters - 1
。
对于更困难/更复杂的解决方案,我想出了:
tree
但这根本不是一个好的解决方案:它只是复制tree /A "C:\Test\Game1" | findstr /BRC:"[^| ] "
命令的工作方式。更好地使用我的第一个解
不幸的是,Windows echo
不支持最大深度的选项。但是,您可以通过以下方式填写|
的输出:
@echo off
set "counter=0"
cd /D "C:\Test\Game1"
echo FOLDER PATH listing
for /F "skip=1 tokens=*" %%A IN ('vol') do echo %%A
echo C:.
for /F "delims= eol=" %%B IN ('dir /B /AD') do set /a "counter+=1"
set "_counter=0"
setlocal EnableDelayedExpansion
for /F "delims=" %%C IN ('dir /B /AD') do set /a "_counter+=1" & if not !_counter! EQU %counter% (echo +---%%C) else (echo \---%%C)
pause
exit /b 0
假设这个tree
命令的输出类似(使用ASCII字符(tree
command)而不是扩展名,因为它们更容易处理,因为它们不依赖于当前代码页):
findstr
command
tree "C:\Test\Game1" /A | findstr /V /B /R /C:"[| ] "
命令删除(tree
)用/A
或SPACE开始的所有内容(Folder PATH listing for volume &&&&
Volume serial number is ####-####
C:\TEST\GAME1
+---folder1
| +---folder11
| | +---folder111
| | \---folder112
| \---folder12
| +---folder111
| \---folder112
+---folder2
| +---folder21
| \---folder22
\---folder3
+---folder31
\---folder32
),然后是三个SPACE。对于显示比1级更深的文件夹的所有行都满足这些条件。因此输出将是这样的:
findstr
要显示更多级别,只需相应地扩展搜索表达式;所以要下到2级,使用/V
。
要隐藏标题(包含卷信息和大写根路径),只需将SPACE和/B
附加到命令行。
请注意,Windows路径分隔符是|
但不是Folder PATH listing for volume &&&&
Volume serial number is ####-####
C:\TEST\GAME1
+---folder1
+---folder2
\---folder3
。
/C:"[| ] [| ] "
只是寻找以/C:"[^+|\\]"
开头的行在我的机器上运行。
\
当然,如果没有/
,还有其他命令可以做到这一点。
cmd.exe - C:\Test\Game1" /A |findstr/V /B /R /C:"[| ] "
powershell.exe - '+-'