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

回复 3# newswan
_数量不固定可以这样。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.jpg) do (
  4.     set n=1
  5.     set str=%%a
  6.     set str=!str:_= !
  7.     for %%b in (!str!) do (
  8.         if !n!==1 (
  9.             set str1=%%b&set n=0
  10.         ) else if "%%b"=="%%~nb" (
  11.             set str2=%%b
  12.         )
  13.     )
  14. ren "%%a" "!str1!_!str2!.jpg"
  15. )
  16. pause
复制代码

TOP

什么sed、awk之类的都属于第三方命令,需要下载所属代码,处理字符串较为方便,个人偏爱纯批,不受限制。

TOP

也可以这样:
通过set /a m-=?,来控制文件名是要保留倒数第几段字符。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.jpg) do (
  4.     set n=0
  5.     set str=%%a
  6.     set str=!str:_= !
  7.     for %%b in (!str!) do (
  8.         set /a n+=1
  9.         set /a m=!n!%%10
  10.         set str!m!=%%b
  11.     )
  12.     set /a m-=1
  13.     for %%c in (str!m!) do ren "%%a" "!str1!_!%%c!.jpg"
  14. )
  15. pause
复制代码

TOP

回复 13# newswan

画蛇添足是我经常出现的问题,谢谢提醒。应修改为:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%a in (*.jpg) do (
  4.     set n=0
  5.     set str=%%a
  6.     set str=!str:_= !
  7.     for %%b in (!str!) do (
  8.         set /a n+=1
  9.         set str!n!=%%b
  10.     )
  11.     set /a n-=1
  12.     for %%c in (str!n!) do ren "%%a" "!str1!_!%%c!.jpg"
  13. )
  14. pause
复制代码

TOP

回复 16# Alandx
变量延迟转换,假借而已,实际上并没有循环。

TOP

返回列表