Board logo

标题: [文件操作] [已解决]求助BATJ脚本批量更换文件名 [打印本页]

作者: 13711640208    时间: 2021-6-20 10:43     标题: [已解决]求助BATJ脚本批量更换文件名

本帖最后由 13711640208 于 2021-6-24 14:36 编辑

目的 就是把目录下的文件名字换个格式 如20200720171513-O-L01-EN-15899666906.wav 换成15899666906_20200720171513.wav
上百个文件需要更改
  1. setlocal EnableDelayedExpansion
  2. for /f "delims=" %%a in ('cmd /c "dir /b %cd%\*.wav"') do (
  3. set a=%%a
  4. )
  5. for /f "tokens=1,2,3,4,5,6,7 delims=-. " %%a in ('cmd /c "dir /b %cd%\*.wav"') do (
  6. set b=%%e_%%a.wav
  7. )
  8. ren %a% %b%
  9. pause
复制代码
这代码只能改set获取到的最后一个值 没啥用
作者: xiaofeige123    时间: 2021-6-20 11:47

用Excel表格函数修改啊
作者: 13711640208    时间: 2021-6-20 12:24

回复 3# idwma
ren好像不可以放在那里 报错了
作者: newswan    时间: 2021-6-20 15:34

setlocal EnableDelayedExpansion
for /f "tokens=1-6 delims=-." %%a in ('cmd /c "dir /b %cd%\*.wav"') do (
    ren %%a-%%b-%%c-%%d-%%e.%%f %%e-%%a.%%f
)

pause
作者: qixiaobin0715    时间: 2021-6-25 11:08

通用一点的话,取文件名以短横分割的第1组和最后1组字符重命名,文件名中不存在短横的不改名:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*.wav) do (
  4.     set "str=%%i"
  5.     set "str=!str:-=/!"
  6.     if not "!str!"=="!str:*/=/!" for %%a in ("!str:*/=/!") do ren "%%i" "%%~na_!str:%%~a=!%%~xa"
  7. )
  8. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2