level 2
YOTU2111
楼主
一个总文件夹里有N多子文件夹,子文件夹里放的照片,想求个bat,放到总文件夹下,可以把所有子文件夹里的照片按照此格式批量重命名:“子文件夹名称-01.jpg”,按顺序依次递增。
找到过一个bat,但是第一个文件名称排序是00,不是01。
命令如下
@璐村惂鐢ㄦ埛_000076K馃惥 off
@setlocal enabledelayedexpansion
@For /f "delims=" %%i in ('dir /b /ad') do (
@贴吧用户_0000Q9P %%i
@call :substr_before_char - %%i dir1
@call :substr_after_char - %%i dir2
@call :clr_bgn0s !dir2! n
@echo !dir1! !dir2! !n!
@for /f "delims=" %%j in ('dir /b /on') do (
@set rn=00!n!
@set rn=!rn:~-2!
@echo !rn!
@ren "%%j" "!dir1!-!rn!.jpg"
@set /a n=n+1
)
@cd..
)
@goto End0
:clr_bgn0s
@setlocal
@set str=%1
:Rep1
@set fc=%str:~0,1%
@if %fc%==0 (
@set str=%str:~1%
@goto Rep1
)
:Rtn1
@endlocal& set "%~2=%str%"
@goto :eof
:substr_after_char
@setlocal
@set c=%1
@set str=%2
@set tmp_str=%str%
:Rep2
@set get_c=%tmp_str:~0,1%
@if %get_c%==%c% (
@set tmp_str=%tmp_str:~1%
@goto Rtn2
)
@set tmp_str=%tmp_str:~1%
@if "%tmp_str%"=="" (
@goto Rtn2
) else (
@goto Rep2
)
:Rtn2
@set str=%tmp_str%
@endlocal& set "%~3=%str%"
@goto :eof
:substr_before_char
@setlocal
@set c=%1
@set str=%2
@set tmp_str=%str%
:Rep3
@set get_c=%tmp_str:~-1%
@if %get_c%==%c% (
@set tmp_str=%tmp_str:~0,-1%
@goto Rtn3
)
@set tmp_str=%tmp_str:~0,-1%
@if "%tmp_str%"=="" (
@set tmp_str=%str%
@goto Rtn3
) else (
@goto Rep3
)
:Rtn3
@set str=%tmp_str%
@endlocal& set "%~3=%str%"
@goto :eof
:End0
如果按照这个改,应该怎么改。或者请大神给我一共一个新的,感激不尽
2020年06月29日 17点06分
1
找到过一个bat,但是第一个文件名称排序是00,不是01。
命令如下
@璐村惂鐢ㄦ埛_000076K馃惥 off
@setlocal enabledelayedexpansion
@For /f "delims=" %%i in ('dir /b /ad') do (
@贴吧用户_0000Q9P %%i
@call :substr_before_char - %%i dir1
@call :substr_after_char - %%i dir2
@call :clr_bgn0s !dir2! n
@echo !dir1! !dir2! !n!
@for /f "delims=" %%j in ('dir /b /on') do (
@set rn=00!n!
@set rn=!rn:~-2!
@echo !rn!
@ren "%%j" "!dir1!-!rn!.jpg"
@set /a n=n+1
)
@cd..
)
@goto End0
:clr_bgn0s
@setlocal
@set str=%1
:Rep1
@set fc=%str:~0,1%
@if %fc%==0 (
@set str=%str:~1%
@goto Rep1
)
:Rtn1
@endlocal& set "%~2=%str%"
@goto :eof
:substr_after_char
@setlocal
@set c=%1
@set str=%2
@set tmp_str=%str%
:Rep2
@set get_c=%tmp_str:~0,1%
@if %get_c%==%c% (
@set tmp_str=%tmp_str:~1%
@goto Rtn2
)
@set tmp_str=%tmp_str:~1%
@if "%tmp_str%"=="" (
@goto Rtn2
) else (
@goto Rep2
)
:Rtn2
@set str=%tmp_str%
@endlocal& set "%~3=%str%"
@goto :eof
:substr_before_char
@setlocal
@set c=%1
@set str=%2
@set tmp_str=%str%
:Rep3
@set get_c=%tmp_str:~-1%
@if %get_c%==%c% (
@set tmp_str=%tmp_str:~0,-1%
@goto Rtn3
)
@set tmp_str=%tmp_str:~0,-1%
@if "%tmp_str%"=="" (
@set tmp_str=%str%
@goto Rtn3
) else (
@goto Rep3
)
:Rtn3
@set str=%tmp_str%
@endlocal& set "%~3=%str%"
@goto :eof
:End0
如果按照这个改,应该怎么改。或者请大神给我一共一个新的,感激不尽