批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖

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

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

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

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2
非常好的论坛

  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

评分人数

TOP

回复 2# bailong360
非常感谢您的回复  但是这个代码稍显不稳定  最大页码命名没有问题  但是最小页码 就不稳定了  有的时候 把000001命名成 fm   有的时候把000002 命名成fm  刚刚测试 又发现把000027命名成fm
还有就是不支持 批量  只能放在有图片的文件夹里面运行
非常好的论坛

TOP

回复 2# bailong360


ren "%Min%" "fm.tif" 可以简化成:
  1. ren ??????.tif fm.tif 2>nul
复制代码

TOP

回复 4# CrLf
谢谢您
最小文件名已经完美解决   但是最大的还是不行  如:最大的文件名   000022
但是运行后会把000021变成 fd
非常好的论坛

TOP

本帖最后由 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

评分人数

TOP

回复 6# aa77dd@163.com
非常感谢  再麻烦您一下  能做成同时对N个文件夹做处理吗
非常好的论坛

TOP

回复 6# aa77dd@163.com
看走眼了,原来是按文件名大小处理......

TOP

回复 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

评分人数

TOP

回复 9# aa77dd@163.com
非常感谢   完美解决了问题  呵呵
非常好的论坛

TOP

  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

评分人数

TOP

回复 9# aa77dd@163.com


    大哥我有也有个类似的问题
    删除下级目录下都最后一张图片

TOP

回复 11# WHY


      大哥我有也有个类似的问题
      忙写个代码   也是名称排序   只删除下级文件夹的最后一张图片(同级或者下下级都不动)

TOP

返回列表