标题: [文件操作] 一个批处理重命名问题,请教各位大神 [打印本页]
作者: 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- @echo off
- setlocal EnableDelayedExpansion
- pushd "%~dp0"
- for /r . /d %%A in (*) do (
- pushd "%%A"
- set /a ctr=0,left=0,right=0
- set file1=
- set file2=
- for /f "delims=" %%B in ('2^>nul,where ".:*.jpg"') do (
- set /a ctr+=1
- if !ctr! equ 1 (
- ren "%%B" "机台照.jpg"
- ) else (
- set /a left=right,right=left+5
- ren "%%B" "!left!-!right!m.jpg"
- set file1=!file2!
- set file2="!left!-!right!m.jpg"
- )
- )
- ren !file1! "全景照.jpg"
- ren !file2! "喷漆照.jpg"
- popd
- )
- popd
- endlocal
- pause
- exit /b
复制代码
作者: 窄口牛 时间: 2019-9-5 09:21
本帖最后由 窄口牛 于 2019-9-5 09:53 编辑
- @echo off
- Setlocal enabledelayedexpansion
- md 55
- cd.>IMG_20190902_172439.jpg
- cd.>IMG_20190902_172453.jpg
- cd.>IMG_20190902_172456.jpg
- cd.>IMG_20190902_172500.jpg
- cd.>IMG_20190902_172503.jpg
- cd.>IMG_20190902_172512.jpg
- cd.>IMG_20190902_172555.jpg
- move *.jpg .\55
- echo 文件创建完成,任意键显示重命名要求
- pause >nul
- cls
- echo 要求重命名格式如下
- ECHO 第一张 机台照.jpg
- ECHO 最后一张 喷漆照.jpg
- ECHO 倒数第二张 全景照.jpg
- ECHO 第二张开始 0-5m.jpg
- ECHO 第三张 5-10m.jpg
- ECHO 第四张 10-15m.jpg
- ECHO 第五张 15-20m.jpg
- ECHO .
- ECHO .
- ECHO .
- ECHO .
- ECHO 第101张 495-500m.jpg
- echo 任意键开始处理
- pause >nul
- pushd "%~dp0"
- for /r . /d %%A in (*) do (
- pushd "%%A"
- set /a ctr=0,left=0,right=0
- set file1=
- set file2=
- for /f "delims=" %%B in ('2^>nul,where ".:*.jpg"') do (
- set /a ctr+=1
- if !ctr! equ 1 (
- ren "%%B" "机台照.jpg"
- ) else (
- set /a left=right,right=left+5
- ren "%%B" "!left!-!right!m.jpg"
- set file1=!file2!
- set file2="!left!-!right!m.jpg"
- )
- )
- ren !file1! "全景照.jpg"
- ren !file2! "喷漆照.jpg"
- popd
- )
- popd
- endlocal
- pause
- exit /b
复制代码
回复楼下,了解了,改正
作者: flashercs 时间: 2019-9-5 09:40
回复 4# 窄口牛
“处理子目录”
作者: xczxczxcz 时间: 2019-9-5 10:22
来个简单的 PS用法自查- (ls -Rec | ? { $_ -is [IO.DirectoryInfo] }).FullName | Foreach {
- $Jpg = ls $_\IMG*.jpg;
- if ($Jpg) {
- if ($Jpg[0]) { Ren $Jpg[0].FullName -NewName '机台照.jpg' -Force -ea 'SilentlyContinue' }
- if ($Jpg[-2]) { Ren $Jpg[-2].FullName -NewName '全景.jpg' -Force -ea 'SilentlyContinue' }
- if ($Jpg[-1]) { Ren $Jpg[-1].FullName -NewName '喷漆.jpg' -Force -ea 'SilentlyContinue' }
-
- if ($Jpg.Count -gt 3) {
- $n = 0;
- For ($i = 1; $i -lt $Jpg.Count - 2; $i++) {
- Ren $Jpg[$i].FullName -NewName ([String]::Concat("$n", '-', ($n + 5), 'm.jpg'));
- $n += 5;
- }
- }
- }
- }
复制代码
作者: terse 时间: 2019-9-5 10:56
本帖最后由 terse 于 2019-9-5 12:24 编辑
会不会有文件夹就二张或三张图片的情况,运行前先备份- @echo off & setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('dir /b/ad/s') do (
- set file=&set file1=&set "file2="
- set /ai=m=0,n=-5
- for /f "delims=" %%b in ('dir /b/a-d "%%~fa\*.jpg" ') do (
- if defined file ( set /ai+=1) else set "file=%%~fa\%%b"
- set "file2=!file1!"
- set "file1=%%~fa\%%b"
- )
- for /f "delims=" %%b in ('dir /b/a-d "%%~fa\*.jpg" ^| more +1') do (
- set /am+=5,n+=5,i-=1
- if !i! gtr 1 ren "%%~fa\%%b" "!n!-!m!m%%~xb" 2>nul
- )
- ren "!file!" "机台照.jpg" 2>nul
- ren "!file2!" "喷漆照.jpg" 2>nul
- ren "!file1!" "全景照.jpg" 2>nul
- )
- 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 |