本帖最后由 yhcfsr 于 2018-3-15 14:46 编辑
- @echo off
- for /f "delims=" %%a in ('dir /ad/s/b^|sort /r') do (
- set "$=%%~na#"&set len=0
- setlocal enabledelayedexpansion
- for %%b in (4 2 1)do if !$:~%%b^,1!. NEQ . set/a len+=%%b&set $=!$:~%%b!
- if !len! equ 1 ren "%%a" "000%%~na"
- if !len! equ 2 ren "%%a" "00%%~na"
- if !len! equ 3 ren "%%a" "0%%~na"
- endlocal
- )
-
- pause
复制代码 关键是sort /r
dir打印目录列表后,这张表就被保存了。你的代码先命名前级目录,这时子目录的实际路径已变。
而dir之前保存的目录列表还是原来的,CMD还是按原来的路径去命名子目录,这里就会提示找不到路径,重命名失败。
解决方法是逆序排列,让子目录排在前面。先重命名子目录,再命名母目录,就没问题了。 |