如何写一个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文件夹内则可执行操作
展开
 我来答
命幽
2014-01-21 · TA获得超过788个赞
知道小有建树答主
回答量:654
采纳率:0%
帮助的人:425万
展开全部
@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下测试成功

希望能帮助到你 望采纳

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ijyfe
2014-01-19 · TA获得超过3000个赞
知道小有建树答主
回答量:1243
采纳率:25%
帮助的人:476万
展开全部
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
albumin
2014-01-19 · TA获得超过1.2万个赞
知道大有可为答主
回答量:4889
采纳率:87%
帮助的人:2374万
展开全部
@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
)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式