标题: [文件操作] [已解决]批处理怎样将多个文件夹内的图片按名称排序后将第一个和最后一个文件重命名 [打印本页]
作者: 001011 时间: 2015-7-17 11:58 标题: [已解决]批处理怎样将多个文件夹内的图片按名称排序后将第一个和最后一个文件重命名
本帖最后由 pcl_test 于 2016-9-8 17:33 编辑
文件夹内有N个文件夹 里面都是图片 tif格式的
需要把每个文件夹内的第一个(最小的文件名)图片命名为:“fm” 最后一个(最大的文件名)命名为:“fd”
谢谢
作者: bailong360 时间: 2015-7-17 13:34
- @echo off
- dir /b /os *.tif>"%temp%\$$"
- set /p Min=<"%temp%\$$"
- for /f "useback delims=" %%i in ("%temp%\$$") do set Max=%%i
- ren "%Min%" "fm.tif"
- ren "%Max%" "fd.tif"
- del "%temp%\$$
复制代码
作者: 001011 时间: 2015-7-18 15:21
回复 2# bailong360
非常感谢您的回复 但是这个代码稍显不稳定 最大页码命名没有问题 但是最小页码 就不稳定了 有的时候 把000001命名成 fm 有的时候把000002 命名成fm 刚刚测试 又发现把000027命名成fm
还有就是不支持 批量 只能放在有图片的文件夹里面运行
作者: CrLf 时间: 2015-7-18 18:13
回复 2# bailong360
ren "%Min%" "fm.tif" 可以简化成:- ren ??????.tif fm.tif 2>nul
复制代码
作者: 001011 时间: 2015-7-18 21:14
回复 4# CrLf
谢谢您
最小文件名已经完美解决 但是最大的还是不行 如:最大的文件名 000022
但是运行后会把000021变成 fd
作者: aa77dd@163.com 时间: 2015-7-18 21:42
本帖最后由 aa77dd@163.com 于 2015-7-18 21:54 编辑
回复 5# 001011
楼主是要按文件名排序, 2楼不能用 dir /os 处理
可以 dir /on 或者 dir /b *.tif | sort- @echo off
- for /f %%a in ('dir /b /on ??????.tif') do (
- if not defined min set "min=%%a"
- set "max=%%a"
- )
- ren "%min%" fm.tif
- ren "%max%" fd.tif
复制代码
作者: 001011 时间: 2015-7-18 22:13
回复 6# aa77dd@163.com
非常感谢 再麻烦您一下 能做成同时对N个文件夹做处理吗
作者: bailong360 时间: 2015-7-18 22:16
回复 6# aa77dd@163.com
看走眼了,原来是按文件名大小处理......
作者: aa77dd@163.com 时间: 2015-7-18 23:10
回复 7# 001011
放在主目录里- @echo off & setlocal enabledelayedexpansion
- set "subdir="
- for /f "delims=" %%a in ('dir /s /b /on ??????.tif') do (
- if not "%%~psa"=="!subdir!" (
- for %%s in (!subdir!) do (
- ren "!%%smin!" fm.tif
- ren "!%%smax!" fd.tif
- )
- set "subdir=%%~psa"
- )
- if not defined %%~psamin set "%%~psamin=%%a"
- set "%%~psamax=%%a"
- )
- for %%s in (!subdir!) do (
- ren "!%%smin!" fm.tif
- ren "!%%smax!" fd.tif
- )
复制代码
作者: 001011 时间: 2015-7-19 09:44
回复 9# aa77dd@163.com
非常感谢 完美解决了问题 呵呵
作者: WHY 时间: 2015-7-19 13:57
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b /s /on ??????.tif^&echo;') do (
- ren "%%i" fm.tif
- for %%j in ("!strFile!") do (
- if /i not "%%~dpi"=="%%~dpj" ren "!strFile!" fd.tif
- )
- set "strFile=%%i"
- ) 2>nul
- pause
复制代码
作者: s7765991 时间: 2021-2-28 01:21
回复 9# aa77dd@163.com
大哥我有也有个类似的问题
删除下级目录下都最后一张图片
作者: s7765991 时间: 2021-2-28 01:23
回复 11# WHY
大哥我有也有个类似的问题
忙写个代码 也是名称排序 只删除下级文件夹的最后一张图片(同级或者下下级都不动)
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |