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

[文件操作] [已解决]批处理根据指定条件,指定文件重命名?

本帖最后由 czvde 于 2022-5-30 23:26 编辑

文件夹未操作前如下:

ABC987_=-00.png
ABC987_=-03.png
ABC987_=-03———11.png
……
ABC987_=-291.png

00ABC_=-001.png
00ABC_=-005.png
……
00ABC_=-941.png



文件夹变成如下:
【00000__00291】ABC987_=-00.png
【00003__00291】ABC987_=-03.png
【00003__00291】ABC987_=-03———11.png
……
【00291__00291】ABC987_=-291.png
【00001__00941】00ABC_=-001.png
【00005__00941】00ABC_=-005.png
……
【00941__00941】00ABC_=-941.png

已解决!

本帖最后由 qixiaobin0715 于 2022-5-27 16:26 编辑

回复 4# czvde
由于你没有提供示范文件,未测试。不知下面代码是否可行:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-2 delims=_-.—=" %%i in ('dir /b /a-d *.png') do (
  4.     if not "%%i"=="!var2!" set _%%i=%%j
  5.     if %%j gtr !_%%i! set _%%i=%%j
  6.     set var2=%%i
  7. )
  8. for /f "tokens=1,2 delims==_" %%i in ('set _') do (
  9.     set str1=0000%%j
  10.     set str1=!str1:~-5!
  11.     for /f "tokens=1-4 delims=-—." %%a in ('dir /b /a-d %%i*.png') do (
  12.         set str2=0000%%b
  13.         set str2=!str2:~-5!
  14.         if "%%d"=="" (
  15.             ren "%%a-%%b.png" "【!str2!__!str1!】%%a-%%b.png"
  16.         ) else (
  17.             ren "%%a-%%b———%%c.png" "【!str2!__!str1!】%%a-%%b———%%c.png"
  18.         )
  19.     )
  20. )
  21. pause
复制代码
刚才有点小错误,已修改。
1

评分人数

    • czvde: 乐于助人技术 + 1

TOP

本帖最后由 qixiaobin0715 于 2022-5-27 10:30 编辑

回复 4# czvde
你把顶楼以前的要求重新修改后,现在的描述(比如参考二楼,什么加一,不加一的)就会让别人感到莫名奇妙。
实际上修改需求后就不存在加一的问题,而是变成判断大小的事了。

TOP

回复 4# czvde
那就要复杂一些,修改代码第3行的求最大序号的变量,后面不变。最好能自己先考虑一下如何修改。

TOP

回复 3# qixiaobin0715


    如果1楼改为这样,如何实现

TOP

回复 1# czvde
2楼代码第3行%%i前少了一个空格。

TOP

将下面代码 另存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=_"%%i in ('dir /b /a-d *.png') do set /a _%%i+=1
  4. for /f "tokens=1,2 delims==_" %%i in ('set _') do (
  5.     set str1=0000%%j
  6.     set str1=!str1:~-5!
  7.     for /f "tokens=1,2 delims=-." %%a in ('dir /b /a-d %%i*.png') do (
  8.         set str2=0000%%b
  9.         set str2=!str2:~-5!
  10.         ren "%%a-%%b.png" "【!str2!__!str1!】%%a-%%b.png"
  11.     )
  12. )
  13. pause
复制代码
未测试
1

评分人数

    • czvde: 乐于助人技术 + 1

TOP

返回列表