for /f "delims=" %%a in ('dir /ad /b') do (
chdir %%a
for /f "delims=" %%b in ("%cd%") do set new_name=%%~nb
set num=1
for /f "delims=" %%b in ('dir /b *jpg') do (
set /a !num!+=1
if !num! LSS 10 (ren "%%b" "!new_name!-00!num!.jpg") else ren "%%b" "!new_name!-0!num!.jpg"
)
chdir ..
)
===========================
主批处理文件 RENF.BAT
===========================
@echo off
if {%1}=={} goto noparam
set fileprefix=%2
set filenumber=101
for %%I in (%1) do RENF1.BAT "%%I"
set fileprefix=
set filenumber=
goto end
:noparam
echo.
echo Usage: RENF jpgfiles fileprefix
echo.
:end
===========================
被调用的批处理文件 RENF1.BAT
===========================
@echo off
ren %1 %fileprefix%-%filenumber%.jpg
set /a filenumber=filenumber+1
for /f "delims=" %%a in ('dir /s/b/a-d *.jpg') do (
for /f "delims=" %%b in ("%%~dpa\.") do (
if not "!_batch!"=="_%%~nb" set _batch=_%%~nb&set num=0&echo....
set /a num+=1
set nums=00!num!
set nums=!nums:~-3!
ren "%%~a" "%%~nb-!nums!%%~xa"
)
)
for /f "delims=" %%a in ('dir /s/b/ad') do (
set num=0
echo %%a ....
for /f "delims=" %%b in ('dir /b %%a\*.jpg') do (
set /a num+=1
set nums=00!num!
set nums=!nums:~-3!
ren "%%a\%%b" "%%~na-!nums!.jpg"
)
)
原先我也写过和版主类似的代码
for /f "delims=" %%a in ('dir /s/b/a-d *.jpg') do (
for /f "delims=" %%b in ("%%~dpa") do (..........
但提示 “echo已关闭” 无法得到目录名
没想到版主在 %%~dpa 后加了 . 就轻松解决了!
@echo off & SetLocal EnableDelayedExpansion
for /f "delims=" %%a in ('dir /s/b/ad') do (
set num=0
echo %%a ....
for /f "delims=" %%b in ('dir /b "%%a"\*.jpg') do (
set /a num+=1
set nums=00!num!
set nums=!nums:~-3!
ren "%%a\%%b" "%%~na-!nums!.jpg"
)
)
for /f "delims=" %%a in ('dir /ad /b') do (
pushd "%%a"
for /f "delims=" %%b in ("%cd%") do set new_name=%%~nb
set num=0
for /f "delims=" %%b in ('dir /b *jpg') do (
set /a num+=1
set nums=00!num!
set nums=!nums:~-3!
ren "%%b" "!new_name!-!nums!.jpg"
)
popd
)