找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 37867|回复: 12

[文件操作] [已解决]批处理怎样将多个文件夹内的图片按名称排序后将第一个和最后一个文件重命名

[复制链接]
发表于 2015-7-17 11:58:04 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-8 17:33 编辑

文件夹内有N个文件夹  里面都是图片 tif格式的
需要把每个文件夹内的第一个(最小的文件名)图片命名为:“fm”   最后一个(最大的文件名)命名为:“fd”
谢谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-7-17 13:34:39 | 显示全部楼层
  1. @echo off
  2. dir /b /os *.tif>"%temp%\$$"
  3. set /p Min=<"%temp%\$$"
  4. for /f "useback delims=" %%i in ("%temp%\$$") do set Max=%%i
  5. ren "%Min%" "fm.tif"
  6. ren "%Max%" "fd.tif"
  7. del "%temp%\$$
复制代码

评分

参与人数 1技术 +1 收起 理由
001011 + 1 非常感谢

查看全部评分

 楼主| 发表于 2015-7-18 15:21:38 | 显示全部楼层
回复 2# bailong360
非常感谢您的回复  但是这个代码稍显不稳定  最大页码命名没有问题  但是最小页码 就不稳定了  有的时候 把000001命名成 fm   有的时候把000002 命名成fm  刚刚测试 又发现把000027命名成fm
还有就是不支持 批量  只能放在有图片的文件夹里面运行
发表于 2015-7-18 18:13:10 | 显示全部楼层
回复 2# bailong360


ren "%Min%" "fm.tif" 可以简化成:
  1. ren ??????.tif fm.tif 2>nul
复制代码
 楼主| 发表于 2015-7-18 21:14:25 | 显示全部楼层
回复 4# CrLf
谢谢您
最小文件名已经完美解决   但是最大的还是不行  如:最大的文件名   000022
但是运行后会把000021变成 fd
发表于 2015-7-18 21:42:31 | 显示全部楼层
本帖最后由 aa77dd@163.com 于 2015-7-18 21:54 编辑

回复 5# 001011

楼主是要按文件名排序, 2楼不能用 dir /os 处理

可以 dir /on 或者 dir /b *.tif | sort
  1. @echo off
  2. for /f %%a in ('dir /b /on ??????.tif') do (
  3.     if not defined min set "min=%%a"
  4.     set "max=%%a"
  5. )
  6. ren "%min%" fm.tif
  7. ren "%max%" fd.tif
复制代码

评分

参与人数 1技术 +1 收起 理由
001011 + 1 非常感谢

查看全部评分

 楼主| 发表于 2015-7-18 22:13:22 | 显示全部楼层
回复 6# aa77dd@163.com
非常感谢  再麻烦您一下  能做成同时对N个文件夹做处理吗
发表于 2015-7-18 22:16:05 | 显示全部楼层
回复 6# aa77dd@163.com
看走眼了,原来是按文件名大小处理......
发表于 2015-7-18 23:10:42 | 显示全部楼层
回复 7# 001011

放在主目录里
  1. @echo off & setlocal enabledelayedexpansion
  2. set "subdir="
  3. for /f "delims=" %%a in ('dir /s /b /on ??????.tif') do (
  4.     if not "%%~psa"=="!subdir!" (
  5.         for %%s in (!subdir!) do (
  6.             ren "!%%smin!" fm.tif
  7.             ren "!%%smax!" fd.tif
  8.         )
  9.         set "subdir=%%~psa"
  10.     )
  11.     if not defined %%~psamin set "%%~psamin=%%a"
  12.     set "%%~psamax=%%a"
  13. )
  14. for %%s in (!subdir!) do (
  15.     ren "!%%smin!" fm.tif
  16.     ren "!%%smax!" fd.tif
  17. )
复制代码

评分

参与人数 1技术 +1 收起 理由
001011 + 1 非常感谢

查看全部评分

 楼主| 发表于 2015-7-19 09:44:30 | 显示全部楼层
回复 9# aa77dd@163.com
非常感谢   完美解决了问题  呵呵
发表于 2015-7-19 13:57:19 | 显示全部楼层
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%i in ('dir /b /s /on ??????.tif^&echo;') do (
  4.     ren "%%i" fm.tif
  5.     for %%j in ("!strFile!") do (
  6.         if /i not "%%~dpi"=="%%~dpj" ren "!strFile!" fd.tif
  7.     )
  8.     set "strFile=%%i"
  9. ) 2>nul
  10. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
001011 + 1 完美

查看全部评分

发表于 2021-2-28 01:21:47 | 显示全部楼层
回复 9# aa77dd@163.com


    大哥我有也有个类似的问题
    删除下级目录下都最后一张图片
发表于 2021-2-28 01:23:20 | 显示全部楼层
回复 11# WHY


      大哥我有也有个类似的问题
      忙写个代码   也是名称排序   只删除下级文件夹的最后一张图片(同级或者下下级都不动)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 10:45 , Processed in 0.038331 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表