[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 qixiaobin0715 于 2023-3-2 08:10 编辑
  1. @echo off
  2. set /a #1=3,#2=#3=#0=-1
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /s /a-d *.jpg') do (
  5.     set /a n=%%~ni%%4
  6.     set /a m=%%~ni+#!n!
  7.     set m=000!m!
  8.     ren "%%i" "!m:~-4!%%~xi"
  9. )
  10. pause
复制代码

TOP

回复 10# 001011
仔细看了看,原来如此。顶楼表达有问题,这样就不会使人误会了:
原文件名   命名后
0001                00004
0002                00001
0003                00002
0004                00003
0005                00008
0006                00005
....
重命名后,前面多加一个0,防止命名过程中出现重名文件,我想应当不会有大碍。
代码中使用了伪循环(第2个for),作用是去掉原文件名中的位于最前面的若干0,便于后面的计算:
  1. @echo off
  2. set /a #1=3,#2=#3=#0=-1
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b /s /a-d *.jpg') do (
  5.     for /f "tokens=* delims=0" %%j in ("%%~ni") do (
  6.         set /a n=%%j%%4
  7.         set /a m=%%j+#!n!
  8.         set m=0000!m!
  9.         ren "%%i" "!m:~-5!%%~xi"
  10.     )
  11. )
  12. pause
复制代码

TOP

返回列表