[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
把如下内容编辑成一个CMD 脚本,然后把要测试的文件拖入该脚本就可得到其目录层数
  1. @ECHO OFF
  2. IF %1*==* GOTO END
  3. ECHO %1
  4. SET M=0
  5. FOR /F "DELIMS=" %%C IN ("%1") DO (CD %%~DPC &%%~DC)
  6. :LOOP
  7. SET /A M=%M%+1
  8. CD ..
  9. IF "%CD:~-2%"==":\" GOTO END
  10. GOTO LOOP
  11. :END
  12. ECHO %M% 层目录!
  13. PAUSE
复制代码
方法2:通过循环从变量尾部不断缩减变量长度,通过 截取变量末尾1个和2个字符是否为 \ 和:\ 来计数。
  1. @ECHO OFF
  2. IF %1*==* GOTO END
  3. ECHO %1
  4. SET /A M=0
  5. SET NAME=%~SDP1
  6. :LOOP
  7. IF "%NAME:~-2%" ==":\" GOTO END
  8. IF "%NAME:~-1%"=="\"  SET /A M=%M%+1
  9. SET NAME=%NAME:~0,-1%
  10. GOTO LOOP
  11. :END
  12. ECHO %M% 层目录!
  13. PAUSE
复制代码
方法3:通过逐一字节缩短变量的方法获得变量总长度,把变量中的"\"替换为空,通过测算替换前后变量的长度差获取"\"的个数.
  1. @ECHO OFF & SETLOCAL ENABLEDELAYEDEXPANSION
  2. IF %1*==* GOTO :EOF
  3. ECHO %1
  4. SET NAME0=%~1
  5. SET NAME=%NAME0% & CALL :T2 & SET /A N=%M%
  6. SET NAME=%NAME0:\=% & CALL :T2
  7. SET /A X=%N%-%M%-1 & ECHO %X%层
  8. PAUSE
  9. GOTO :EOF
  10. :T2
  11. SET M=0
  12. :LOOP
  13.   SET /A M=%M%+1
  14.   FOR /F "DELIMS=" %%C IN ("!M!") DO IF "!NAME:~%%C!" EQU "" GOTO END
  15.   GOTO LOOP
  16. :END
复制代码

TOP

把文件拖放到该批处理可获得 文件路径中的"\" 个数。
  1. @ECHO OFF & SETLOCAL ENABLEDELAYEDEXPANSION
  2. IF %1*==* GOTO :EOF
  3. ECHO %1 & SET NAME=%~1 & SET N=0 & SET M=0
  4. :LOOP
  5.   SET /A M=%M%+1
  6.   FOR /F "DELIMS=" %%C IN ("!M!") DO (
  7.         IF "!NAME:~%%C,1!" EQU "\" SET /A N=%N%+1
  8.         IF "!NAME:~%%C!" EQU "" GOTO END
  9.         )
  10.   GOTO LOOP
  11. :END
  12. ECHO %N% 层
复制代码

TOP

返回列表