|
|
发表于 2024-12-4 22:27:18
|
显示全部楼层
本帖最后由 aloha20200628 于 2024-12-4 22:32 编辑
回复 1# hnfeng
试试以下代码,存为 test.bat,但不要存于目标目录下!运行需要命令行参数指定一个 ‘目标目录’,或将 ‘目标目录’ 直接拖给 test.bat 亦可...
代码中的dir... sort... findstr... 都要 ‘裸奔’,没有套在 for...() 的管道中,虽会产生临时文件,但可充分提升效率,为临时文件须创建一个与目标目录分开的临时文件目录,代码中第二行预设 “d:\tmp” ,可由楼主自定义...
- @echo off &if "%~1"=="" (exit/b)
- setlocal &set "_td=d:\tmp"
- (md "%_td%" &cd "%_td%" &del /q "?._") 2>nul
- dir /s/a-d/tw/o-d "%~1">"d._"
- sort /r "d._" /o "s._"
- set/p _f=<"s._"
- findstr /n ".*" "d._">"n._"
- findstr /iec:"%_f%" "n._">"f._"
- for /f "delims=:" %%n in (f._) do set/a "n=%%n-2"
- findstr /ib "%n%:" "n._">"d._"
- for /f "tokens=3* delims= " %%a in ("%_f%") do set "_f=%%b"
- for /f "tokens=1* delims=: " %%a in (d._) do set "_d=%%b"
- set "ff=%_d:~0,-4%\%_f%"
- echo,%ff%
- del/q "?._" 2>nul&endlocal&pause&exit/b
复制代码 |
|