把如下内容编辑成一个CMD 脚本,然后把要测试的文件拖入该脚本就可得到其目录层数- @ECHO OFF
- IF %1*==* GOTO END
- ECHO %1
- SET M=0
- FOR /F "DELIMS=" %%C IN ("%1") DO (CD %%~DPC &%%~DC)
- :LOOP
- SET /A M=%M%+1
- CD ..
- IF "%CD:~-2%"==":\" GOTO END
- GOTO LOOP
- :END
- ECHO %M% 层目录!
- PAUSE
复制代码 方法2:通过循环从变量尾部不断缩减变量长度,通过 截取变量末尾1个和2个字符是否为 \ 和:\ 来计数。- @ECHO OFF
- IF %1*==* GOTO END
- ECHO %1
- SET /A M=0
- SET NAME=%~SDP1
- :LOOP
- IF "%NAME:~-2%" ==":\" GOTO END
- IF "%NAME:~-1%"=="\" SET /A M=%M%+1
- SET NAME=%NAME:~0,-1%
- GOTO LOOP
- :END
- ECHO %M% 层目录!
- PAUSE
复制代码 方法3:通过逐一字节缩短变量的方法获得变量总长度,把变量中的"\"替换为空,通过测算替换前后变量的长度差获取"\"的个数.- @ECHO OFF & SETLOCAL ENABLEDELAYEDEXPANSION
- IF %1*==* GOTO :EOF
- ECHO %1
- SET NAME0=%~1
- SET NAME=%NAME0% & CALL :T2 & SET /A N=%M%
- SET NAME=%NAME0:\=% & CALL :T2
- SET /A X=%N%-%M%-1 & ECHO %X%层
- PAUSE
- GOTO :EOF
- :T2
- SET M=0
- :LOOP
- SET /A M=%M%+1
- FOR /F "DELIMS=" %%C IN ("!M!") DO IF "!NAME:~%%C!" EQU "" GOTO END
- GOTO LOOP
- :END
复制代码
|