[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何批量将图片名改为文件夹名?

如题,例如修改D:\images(包括子文件夹)下的图片名(那个文件夹有多张图片的话用在后面加_01 _02表示(一般一个文件夹不会超过10张图)
D:\images下有图片
D:\images\a\c\1s.jpg
D:\images\a\c\2s.jpg
D:\images\a\c\3s.jpg
D:\images\a\1s.jpg
D:\images\a\2s.jpg

按上面的要求修改后为
D:\images\a\c\c.jpg
D:\images\a\c\c_01.jpg
D:\images\a\c\c_02.jpg
D:\images\a\a.jpg
D:\images\a\a_01.jpg

更新
图片改名顺序没有要求
附上测试数据
http://www.dbank.com/download.action?t=40&k=MTg0NDgyNDM=&pcode=LCw1MzEyNDAsNTMxMjQw&rnd=4

[ 本帖最后由 daohe 于 2010-4-14 11:29 编辑 ]
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

1、请把标题的通假字写准确,一个连标题都马马虎虎的人,很难让人相信你提问时的诚意。
2、多张图片改名时是否有顺序要求?请明示。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

搜到一个  属于比较不好搜的说……
http://www.bathome.net/viewthread.php?tid=5334

[ 本帖最后由 523066680 于 2010-4-13 16:09 编辑 ]

TOP

1,允许文件夹为根目录
2,数字范围:01-99
3,包括目录及子目录里的所有指定类型的文件
4,支持操作隐藏或系统属性的目录和文件
  1. @echo off&setlocal enabledelayedexpansion
  2. set "r=R:\Downloads下载中心\bally\bally"
  3. for /f "delims=" %%a in ('dir "%r%" /s/ad') do (set a=%%a&set n=-1
  4. if "!a:~0,2!"==" %r:~0,1%" (set "a=!a:~1,-4!"&if "!a!"=="%r:~0,1%:\" set "a=!a:~0,-1!"
  5. for %%b in ("!a!") do if "%%~nb"=="" (set "b=%r:~0,1%") else set b=%%~nb
  6. for /f "delims=" %%c in ('dir "!a!\*.jpg" /b/a-d') do set/a n+=1&set m=0!n!&set m=_!m:~-2!&set m=!m:_00=!&ren "!a!\%%c" !b!!m!.jpg))
复制代码
不好意思,惯性思维,导致总是弄混ren的语法。

[ 本帖最后由 hanyeguxing 于 2010-4-14 02:10 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 4楼 的帖子

测试不成功,附上测试数据
http://www.dbank.com/download.ac ... sNTMxMjQw&rnd=4

TOP

  1. @echo off
  2. set str=d:\images
  3. for /r d:\images %%a in (*.jpg) do (
  4.     set str1=%%a
  5.     echo %%a >>tmp.txt
  6.    for /f "tokens=3 delims=\" %%b in (tmp.txt) do (
  7.       for /l %%i in (100,1,199) do (
  8.           set str2=%%i
  9.           ren  %str1% %str%\%%b\%%b_%%str2:~-2%%.jpg
  10.                                                        )
  11.                                                                                      )
  12.                                                            )
  13. pause
  14. del tmp.txt
复制代码

我自己测试了,还是不行,可能ren命令不对,%%str2:~-2%%在ren这里无法取到00,01

[ 本帖最后由 sgaizxt001 于 2010-4-14 01:41 编辑 ]

TOP

回复 6楼 的帖子

命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。

测试不成功

TOP

原帖由 daohe 于 2010-4-13 23:29 发表
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。
命令语法不正确。

测试不成功

已经修改并测试功过
  1. @echo off&setlocal enabledelayedexpansion
  2. set "r=R:\Downloads下载中心\bally\bally"
  3. for /f "delims=" %%a in ('dir "%r%" /s/ad') do (set a=%%a&set n=-1
  4. if "!a:~0,2!"==" %r:~0,1%" (set "a=!a:~1,-4!"&if "!a!"=="%r:~0,1%:\" set "a=!a:~0,-1!"
  5. for %%b in ("!a!") do if "%%~nb"=="" (set "b=%r:~0,1%") else set b=%%~nb
  6. for /f "delims=" %%c in ('dir "!a!\*.jpg" /b/a-d') do set/a n+=1&set m=0!n!&set m=_!m:~-2!&set m=!m:_00=!&ren "!a!\%%c" !b!!m!.jpg))
复制代码

运行前:
R:\Downloads下载中心\bally\bally\hl813-black
R:\Downloads下载中心\bally\bally\hl819-coffee
R:\Downloads下载中心\bally\bally\hl819-wheat
R:\Downloads下载中心\bally\bally\hl813-black\1b.jpg
R:\Downloads下载中心\bally\bally\hl813-black\2b.jpg
R:\Downloads下载中心\bally\bally\hl813-black\3b.jpg
R:\Downloads下载中心\bally\bally\hl813-black\4b.jpg
R:\Downloads下载中心\bally\bally\hl813-black\5b.jpg
R:\Downloads下载中心\bally\bally\hl813-black\6b.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\1s.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\2s.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\3s.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\4s.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\5s.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\6s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\1s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\2s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\3s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\4s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\5s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\6s.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\7s.jpg

运行后:
R:\Downloads下载中心\bally\bally\hl813-black
R:\Downloads下载中心\bally\bally\hl819-coffee
R:\Downloads下载中心\bally\bally\hl819-wheat
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black.jpg
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black_01.jpg
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black_02.jpg
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black_03.jpg
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black_04.jpg
R:\Downloads下载中心\bally\bally\hl813-black\hl813-black_05.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee_01.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee_02.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee_03.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee_04.jpg
R:\Downloads下载中心\bally\bally\hl819-coffee\hl819-coffee_05.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_01.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_02.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_03.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_04.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_05.jpg
R:\Downloads下载中心\bally\bally\hl819-wheat\hl819-wheat_06.jpg

[ 本帖最后由 hanyeguxing 于 2010-4-14 02:19 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

  1. @echo off
  2. set Dir="D:\images"
  3. echo 是否重命名 %Dir% 下的图片文件?
  4. echo,
  5. pause
  6. cls
  7. if not exist %Dir%\ (
  8.     echo 不存在 %Dir% 目录。请重新编辑批处理!
  9.     echo,
  10.     set /p =按任意键退出. . . <nul
  11.     pause>nul
  12.     exit /b
  13. )
  14. echo 处理中. . .
  15. cd /d %Dir%
  16. SetLocal EnableDelayedExpansion
  17. for /f "delims=" %%i in ('dir /a:-d /s /b *.jpg') do (
  18.     if not defined %%~pi (
  19.         set %%~pi=Nothing
  20.         set n=100
  21.         for %%u in ("%%i\..") do set DirName=%%~nxu
  22.         ren "%%i" "!DirName!%%~xi"
  23.     ) else (
  24.         set /a n += 1
  25.         ren "%%i" "!DirName!_!n:~-2!%%~xi"
  26.     )
  27. )
  28. EndLocal
复制代码

TOP

返回列表