|
|
本帖最后由 aloha20200628 于 2026-11-13 12:22 编辑
假设各目录中被处理的均是命名格式如 *-*-*-*-n 的 pdf 文件,检测其中 n 字段丢失的文件...
test-1.bat
- @echo off &setlocal &for /d /r %%D in (*) do (
- pushd "%%D" &setlocal enabledelayedexpansion &set "ls=," &set "mx=1"
- for /f "delims=" %%F in ('dir /b/a-d *.pdf') do set "nF=%%~nF" &for /f "tokens=5 delims=-" %%n in ("%%~nF") do set "ls=!ls!%%n," &if %%n gtr !mx! set "mx=%%n"
- for /f "tokens=1-4 delims=-" %%a in ("!nF!") do set "f=%%a-%%b-%%c-%%d-"
- echo,%%D 丢失如下文件:
- for /l %%x in (1,1,!mx!) do if "!ls!"=="!ls:*,%%x,=!" echo,!f!%%x.pdf
- endlocal &popd )
- pause&exit/b
复制代码
如果每个子目录均假设应有 1-999 个连续命名排序的 *.pdf 文件,则须改用以下代码...
test-2.bat
- @echo off &setlocal &set "xF=pdf"
- (for /d /r %%D in (*) do (
- pushd "%%D" &setlocal enabledelayedexpansion &set "nF=" &set "ls=," &set "mx=999"
- for /f "delims=" %%F in ('dir /b/a-d *.%xF%') do (
- if not defined nF for /f "tokens=1-4 delims=-" %%a in ("%%~nF") do set "f=%%a-%%b-%%c-%%d-"
- for /f "tokens=5 delims=-" %%n in ("%%~nF") do set "ls=!ls!%%n," )
- echo,%%D 丢失如下文件:
- for /l %%n in (1,1,!mx!) do if "!ls!"=="!ls:*,%%n,=!" echo,!f!%%n.%xF%
- endlocal &popd ))>"检查结果.txt"
- explorer /select, "检查结果.txt" &exit/b
复制代码 |
|