Board logo

标题: [文件操作] 一个批处理重命名问题,请教各位大神 [打印本页]

作者: 1317059902    时间: 2019-9-5 00:24     标题: 一个批处理重命名问题,请教各位大神

手机拍摄了大量的图,分类了文件夹,不同的文件夹照片个数不一样,
现在就是要重命名,格式如下
第一张        机台照.jpg
最后一张     喷漆照.jpg
倒数第二张  全景照.jpg
第二张开始  0-5m.jpg
第三张        5-10m.jpg
第四张        10-15m.jpg
第五张        15-20m.jpg
.
.
.
.
第101张      495-500m.jpg
(可能照片只有7张,或者10张,第101张是最大上限)

常试用ren重命名,但是工作量堪比一个个点,实在干不动
尝试阅便文件夹中的照片张数,然后用n开始重命名,还没学透

请教大神,这要怎么操作
作者: 1317059902    时间: 2019-9-5 00:30

ren "1 (1).jpg" 机台照.jpg
ren "1 (2).jpg" 0-5m.jpg
ren "1 (3).jpg" 5-10m.jpg
ren "1 (4).jpg" 10-15m.jpg
ren "1 (5).jpg" 15-20m.jpg
ren "1 (6).jpg" 全景.jpg
ren "1 (7).jpg" 喷漆.jpg

这是对7张的处理,但是处理方式太单一
作者: flashercs    时间: 2019-9-5 02:13

本帖最后由 flashercs 于 2019-9-5 02:19 编辑

处理所有子目录的图片ren.bat
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. pushd "%~dp0"
  4. for /r . /d %%A in (*) do (
  5.   pushd "%%A"
  6.   set /a ctr=0,left=0,right=0
  7.   set file1=
  8.   set file2=
  9.   for /f "delims=" %%B in ('2^>nul,where ".:*.jpg"') do (
  10.     set /a ctr+=1
  11.     if !ctr! equ 1 (
  12.       ren "%%B" "机台照.jpg"
  13.     ) else (
  14.       set /a left=right,right=left+5
  15.       ren "%%B" "!left!-!right!m.jpg"
  16.       set file1=!file2!
  17.       set file2="!left!-!right!m.jpg"
  18.     )
  19.   )
  20.   ren !file1! "全景照.jpg"
  21.   ren !file2! "喷漆照.jpg"
  22.   popd
  23. )
  24. popd
  25. endlocal
  26. pause
  27. exit /b
复制代码

作者: 窄口牛    时间: 2019-9-5 09:21

本帖最后由 窄口牛 于 2019-9-5 09:53 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. md 55
  4. cd.>IMG_20190902_172439.jpg
  5. cd.>IMG_20190902_172453.jpg
  6. cd.>IMG_20190902_172456.jpg
  7. cd.>IMG_20190902_172500.jpg
  8. cd.>IMG_20190902_172503.jpg
  9. cd.>IMG_20190902_172512.jpg
  10. cd.>IMG_20190902_172555.jpg
  11. move *.jpg .\55
  12. echo 文件创建完成,任意键显示重命名要求
  13. pause >nul
  14. cls
  15. echo 要求重命名格式如下
  16. ECHO 第一张        机台照.jpg
  17. ECHO 最后一张     喷漆照.jpg
  18. ECHO 倒数第二张  全景照.jpg
  19. ECHO 第二张开始  0-5m.jpg
  20. ECHO 第三张        5-10m.jpg
  21. ECHO 第四张        10-15m.jpg
  22. ECHO 第五张        15-20m.jpg
  23. ECHO .
  24. ECHO .
  25. ECHO .
  26. ECHO .
  27. ECHO 第101张      495-500m.jpg
  28. echo 任意键开始处理
  29. pause >nul
  30. pushd "%~dp0"
  31. for /r . /d %%A in (*) do (
  32.   pushd "%%A"
  33.   set /a ctr=0,left=0,right=0
  34.   set file1=
  35.   set file2=
  36.   for /f "delims=" %%B in ('2^>nul,where ".:*.jpg"') do (
  37.     set /a ctr+=1
  38.     if !ctr! equ 1 (
  39.       ren "%%B" "机台照.jpg"
  40.     ) else (
  41.       set /a left=right,right=left+5
  42.       ren "%%B" "!left!-!right!m.jpg"
  43.       set file1=!file2!
  44.       set file2="!left!-!right!m.jpg"
  45.     )
  46.   )
  47.   ren !file1! "全景照.jpg"
  48.   ren !file2! "喷漆照.jpg"
  49.   popd
  50. )
  51. popd
  52. endlocal
  53. pause
  54. exit /b
复制代码
回复楼下,了解了,改正
作者: flashercs    时间: 2019-9-5 09:40

回复 4# 窄口牛


    “处理子目录”
作者: xczxczxcz    时间: 2019-9-5 10:22

来个简单的 PS用法自查
  1. (ls -Rec | ? { $_ -is [IO.DirectoryInfo] }).FullName | Foreach {
  2. $Jpg = ls $_\IMG*.jpg;
  3. if ($Jpg) {
  4. if ($Jpg[0]) { Ren $Jpg[0].FullName -NewName '机台照.jpg' -Force -ea 'SilentlyContinue' }
  5. if ($Jpg[-2]) { Ren $Jpg[-2].FullName -NewName '全景.jpg' -Force -ea 'SilentlyContinue' }
  6. if ($Jpg[-1]) { Ren $Jpg[-1].FullName -NewName '喷漆.jpg' -Force -ea 'SilentlyContinue' }
  7. if ($Jpg.Count -gt 3) {
  8. $n = 0;
  9. For ($i = 1; $i -lt $Jpg.Count - 2; $i++) {
  10. Ren $Jpg[$i].FullName -NewName ([String]::Concat("$n", '-', ($n + 5), 'm.jpg'));
  11. $n += 5;
  12. }
  13. }
  14. }
  15. }
复制代码

作者: terse    时间: 2019-9-5 10:56

本帖最后由 terse 于 2019-9-5 12:24 编辑

会不会有文件夹就二张或三张图片的情况,运行前先备份
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('dir /b/ad/s') do (
  3.      set file=&set file1=&set "file2="
  4.      set /ai=m=0,n=-5
  5.      for /f "delims=" %%b in ('dir /b/a-d "%%~fa\*.jpg" ') do (
  6.           if defined file ( set /ai+=1) else set "file=%%~fa\%%b"
  7.           set "file2=!file1!"
  8.           set "file1=%%~fa\%%b"
  9.     )
  10.     for /f "delims=" %%b in ('dir /b/a-d "%%~fa\*.jpg" ^| more +1') do (
  11.          set /am+=5,n+=5,i-=1
  12.          if !i! gtr 1 ren "%%~fa\%%b" "!n!-!m!m%%~xb" 2>nul
  13.     )
  14.     ren "!file!" "机台照.jpg" 2>nul
  15.     ren "!file2!"  "喷漆照.jpg" 2>nul
  16.     ren "!file1!" "全景照.jpg" 2>nul
  17. )
  18. pause
复制代码

作者: 1317059902    时间: 2019-9-5 13:01

回复 3# flashercs


    谢谢大神晚上的知指导
作者: 1317059902    时间: 2019-9-5 13:29

回复 4# 窄口牛


    谢谢大神了,真牛
作者: 1317059902    时间: 2019-9-5 13:32

回复 6# xczxczxcz


    谢谢大神了
作者: 1317059902    时间: 2019-9-5 13:32

回复 7# terse


    谢谢大神,群里面人才真多




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2