如何写一个BAT批处理将子文件夹里的文件分别重命名
一个A文件夹里面有B和C等若干个子文件夹,子文件夹里有多个不同类型的图片文件,如JPG,BMP,PNG等,如何写一个批处理,达到以下三个要求(1)将B和C文件夹里面的文件...
一个A文件夹里面有B和C等若干个子文件夹,子文件夹里有多个不同类型的图片文件,如JPG,BMP,PNG等,如何写一个批处理,达到以下三个要求
(1)将B和C文件夹里面的文件按原文件名称的排列顺序按 001,002,003....的顺序重新命名
(2)但B和C文件夹的文件不能连续重命名下去,如B文件夹的最后一个文件是023.jpg,则C文件的第一个文件不能顺序命名为024.PNG,必须又自动从1开始重新命名为001.PNG
(3)批处理文件放在A文件夹内则可执行操作 展开
(1)将B和C文件夹里面的文件按原文件名称的排列顺序按 001,002,003....的顺序重新命名
(2)但B和C文件夹的文件不能连续重命名下去,如B文件夹的最后一个文件是023.jpg,则C文件的第一个文件不能顺序命名为024.PNG,必须又自动从1开始重新命名为001.PNG
(3)批处理文件放在A文件夹内则可执行操作 展开
3个回答
展开全部
@echo off
for 中轿含/f "delims=" %%i in ('dir/b/s c\*.*') do (
set str=%%~dpi&set str2=%%~nxi
setlocal enabledelayedexpansion
if not "!str!"=="!num!" (
set "n=1"
ren "!str!*.*" "*.*.*"
) else set /a n+=1
ren "!str!!str2!.*" 卖笑"00!n!.*"帆如
for %%a in (!n!) do endlocal&set n=%%a
set "num=%%~dpi"
)
for /f "delims=" %%i in ('dir/b/s b\*.*') do (
set str=%%~dpi&set str2=%%~nxi
setlocal enabledelayedexpansion
if not "!str!"=="!num!" (
set "n=1"
ren "!str!*.*" "*.*.*"
) else set /a n+=1
ren "!str!!str2!.*" "00!n!.*"
for %%a in (!n!) do endlocal&set n=%%a
set "num=%%~dpi"
)
exit
此代码win7下测试成功
希望能帮助到你 望采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /ad /b') do (
set num=1000
for /f "delims=" %%b in ('dir /a-d /b /s "%%a\"') do (
set /a num+=1
set num=!num:~1!
返段 ren "神世纯%%b" "!num!%%~xb"
)
游咐)
)
pause
追问
显示命令语法不正确
追答
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir /ad /b') do (
set num=1000
for /f "delims=" %%b in ('dir /a-d /b /s "%%a\"') do (
set /a num+=1
set sum=!num:~1!
ren "%%b" "!sum!%%~xb"
)
)
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off&备桐袭setlocal enabledelayedexpansion
for /d %%a in (*.*) do (
pushd %%a
set n=1000
for /f "delims=" %%B in ('dir /a-d 轮升/b /on^|findstr /i "jpg$ bmp$ png$"') do 仿兄(
set /a n+=1
set m=!n:~1!
ren "%%B" "!m!%%~xB"
)
popd
)
保存为bat放在A文件夹执行
更多追问追答
追问
显示命令语法不正确
追答
你是否是直接复制上面的代码(不要复制前面的行号)
已经测试过,语法是正确的,如果要包含子文件夹的子文件夹,则将for /d 改为for /r /d
@echo off&setlocal enabledelayedexpansion
for /r /d %%a in (*.*) do (
pushd %%a
set n=1000
for /f "delims=" %%B in ('dir /a-d /b /on^|findstr /i "jpg$ bmp$ png$"') do (
set /a n+=1
set m=!n:~1!
ren "%%B" "!m!%%~xB"
)
popd
)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询