如何使用-tree在目录中显示1层文件夹?

问题描述 投票:1回答:4

我试图只显示目录中的文件夹。

例子C:/Test/Game1

在qazxsw poi有qazxsw poi文件夹,qazxsw poi,qazxsw poi。但是文件夹Game1folder1folder2中有更多文件夹,我不想展示。

我使用过folder3,但它出现了错误

1
cmd tree
4个回答
1
投票

所以,你想要的是以2格式打印文件夹中的所有目录(当然是ASCII字符)。受到aschipfl解决方案的启发,我提出了相反的解决方案:

3

实际上-maxdepth 1es线不包含字符串Too many parameters - 1

对于更困难/更复杂的解决方案,我想出了:

tree

但这根本不是一个好的解决方案:它只是复制tree /A "C:\Test\Game1" | findstr /BRC:"[^| ] " 命令的工作方式。更好地使用我的第一个解


2
投票

不幸的是,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


0
投票
/C:"[| ]   [| ]   "

0
投票

只是寻找以/C:"[^+|\\]"开头的行在我的机器上运行。

\

当然,如果没有/,还有其他命令可以做到这一点。

cmd.exe - C:\Test\Game1" /A |findstr/V /B /R /C:"[| ] "

powershell.exe - '+-'

© www.soinside.com 2019 - 2024. All rights reserved.