windows自带的tree若采用 tree /a 参数输出格式,可确保每行中'树杈'字符的位序一致。
基于此,用纯P代码过滤其输出结果,可以实现指定深度的目录树结构显示。试试如下代码》
- @echo off
- set "dirF=" &set/p "dirF=拖入一个目录:"
- if not defined dirF exit/b
- set "n=" &set/p "n=指定输出目录树的深度(层级):"
- if not defined n exit/b
- set "dirF=%dirF:"=%"
- tree /a "%dirF%">tree.0
- set/a "d=4,an=(n-1)*d"
- setlocal enabledelayedexpansion
- echo,%dirF%
- for /f "skip=2 delims=" %%s in (tree.0) do (
- set "t=%%s" &set "tn=!t:~%an%,1!"
- if "!tn!" equ "+" (echo,%%s)
- if "!tn!" equ "\" (echo,%%s)
- if "!tn!" neq "+" if "!tn!" neq "\" (
- (call :checkAllHad "-" "!t:~,%an%!" %an% allHad)
- if !allHad! equ 1 (echo,%%s)
- )
- )
- (del/q tree.0)&endlocal&pause&exit/b
- ::——————
- :checkAllHad //%1=字符 %2=字符串 %3=字符串长度 %4=返回值变量名
- set "str=%~2" &set/a "m=%~3-1"
- for /L %%k in (0,1,!m!) do (
- if "!str:~%%k,1!" equ "%~1" (set "%~4=1" &exit/b)
- )
- set "%~4=0"
- exit/b
复制代码
|