[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 【已解决】批处理如何根据数字顺序依次更改文件名为字母顺序?

本帖最后由 for_flr 于 2021-10-14 09:51 编辑

一个文件夹为5TY,有多个子文件夹,每个文件夹里有数量不等的文件,但每个文件夹里的文件的文件名都是按数字排序。
如5TY文件夹里有abc、abd、abe、abf等不定数量的文件夹
abc文件夹里有001、002、003、004等按数字排序的8个文件,abd文件夹里有001、002、003、004等按数字排序的11个文件,abe文件夹里有001、002、003、004等按数字排序的17个文件,abf文件夹里有001、002、003、004等按数字排序的13个文件。
需要取文件名的后两位依次加abcd,如001文件改名为01a、002为02b、003为03c、004为04d,
005~007不更改文件名
数字顺序最后一个(abd文件夹里的011、abe文件夹里的017)文件改名为后两位数字+aa,倒数第二个(abd文件夹里的010、abe文件夹里的016)文件改名为后两位数字+ab,以此类推+ac,+ad,直到007文件不改名。
怎样用CMD实现快速批量改名(文件夹、文件扩展名都不改)
谢谢。

谢谢两位,都可以完成任务。

TOP

本帖最后由 qixiaobin0715 于 2021-10-13 23:33 编辑
  1. @echo off
  2. set Letters=1abcdefghijklmnopqrstuvwxyz
  3. setlocal enabledelayedexpansion
  4. for /l %%a in (1,1,26) do set #%%a=!Letters:~%%a,1!
  5. for /d %%i in (*) do (
  6.     set m=0
  7.     set n=5
  8.     for /f "delims=" %%j in ('dir /b /a-d /o-n "%%i\*.*"') do (
  9.         set str=%%~nj
  10.         set str=!str:~1!
  11.         if "!str!" geq "08" (
  12.             set /a m+=1
  13.             for %%x in (#!m!) do ren "%%j" "!str!a!%%x!%%~xj"
  14.         ) else if "!str!" leq "04" (
  15.             set /a n-=1
  16.             for %%y in (#!n!) do ren "%%j" "!str!!%%y!%%~xj"
  17.         )
  18.     )
  19. )
  20. pause
复制代码
1

评分人数

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "a=abcdefghijklmnopqrstuvwxyz"
  4. set "b=dcba"
  5. for /f "delims=" %%i in ('dir /b /ad') do (
  6.   pushd %%i
  7.   echo;处理%%i文件夹内容:
  8.   set /a n=0
  9.   for /f "delims=" %%a in ('dir /a-d /o-n /b') do (
  10.     set fn=%%~na
  11.     set fn=!fn:~-2!
  12.     if %%~na gtr 007 call :cut %a%&echo;!fn!a!fa!
  13.     if %%~na lss 005 call :cut %b%&echo;!fn!!fa!
  14.     if %%~na gtr 004 if %%~na lss 008 echo %%~na&set/a n=0
  15.   )
  16.   echo;————%%i文件夹处理完毕!&echo;&echo;
  17.   popd
  18. )
  19. pause
  20. exit /b
  21. :cut
  22. set fa=%~1
  23. set fa=!fa:~%n%,1!
  24. set /a n+=1
复制代码
假设子文件夹里的文件不超过26个...
1

评分人数

TOP

返回列表