Board logo

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

作者: 001011    时间: 2015-7-17 11:58     标题: [已解决]批处理怎样将多个文件夹内的图片按名称排序后将第一个和最后一个文件重命名

本帖最后由 pcl_test 于 2016-9-8 17:33 编辑

文件夹内有N个文件夹  里面都是图片 tif格式的
需要把每个文件夹内的第一个(最小的文件名)图片命名为:“fm”   最后一个(最大的文件名)命名为:“fd”
谢谢
作者: bailong360    时间: 2015-7-17 13:34

  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%\$$
复制代码

作者: 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" 可以简化成:
  1. 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
  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
复制代码

作者: 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

放在主目录里
  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. )
复制代码

作者: 001011    时间: 2015-7-19 09:44

回复 9# aa77dd@163.com
非常感谢   完美解决了问题  呵呵
作者: WHY    时间: 2015-7-19 13:57

  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
复制代码

作者: 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