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

[文件操作] 批处理怎样修改文件名(含数字运算)?

原来文件名为这样   3_4_3.jpg    3_4_4.jpg     3_4_5.jpg想修改成                 3_3_2.jpg   3_3_3.jpg     3_3_4.jpg
第一个数字不变,第二个和第三个都减去1
批处理要怎么写?

  1. @echo off&setlocal enabledelayedexpansion
  2. for %%a in (*.jpg) do (
  3.    for /f "tokens=1-3 delims=_." %%i in ("%%a") do set /a a=%%i,b=%%j-1,c=%%k-1
  4. ren %%a !a!_!b!_!c!.*
  5. )
  6. pause
复制代码
别点多了啊。次数多了后两个数成为负数也是有可能的
另外在同一目录运行。只要是格式相符的应该都会有反应(不需要改动的,只要文件名中无"_" "."即可)

[ 本帖最后由 wc726842270 于 2011-2-25 15:26 编辑 ]
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /r %%a in (*.jpg) do (
  3.       for /f "tokens=1-3 delims=_" %%b in ("%%~na") do (
  4.            set /a a=%%c-1,b=%%d-1
  5.            ren "%%a"  %%b_ !a!_!b!.jpg
  6.       )
  7. )     
复制代码
***共同提高***

TOP

wc726842270 ,batchman  3q
原来可以这样写~      a=%%c-1

TOP

老大就是老大,用的是("%%~na") 。学习了

[ 本帖最后由 wc726842270 于 2011-2-25 16:20 编辑 ]
枫中残雪:风停了,我的心却在动,让我心中的寒意走向远方

TOP

文件多了的时候出现这个问题了。“存在一个重名文件,或是找不到文件”

TOP

回复 6楼 的帖子

  1. @echo off&setlocal enabledelayedexpansion
  2. md temp
  3. for /r %%a in (*.jpg) do (
  4.       for /f "tokens=1-3 delims=_" %%b in ("%%~na") do (
  5.            set /a a=%%c-1,b=%%d-1
  6.            copy /y %%~nxa temp\%%b_!a!_!b!.jpg
  7.       )
  8. )
  9. for /r temp\ %%a in (*) do move /y "%%a" "%~dp0"
  10. rd /q temp
复制代码

[ 本帖最后由 batman 于 2011-2-25 19:09 编辑 ]
***共同提高***

TOP

返回列表