批处理文件替换部分文件名

时间:2014-03-17 17:46:02

标签: batch-file cmd rename

我正在寻找一个只能替换一组文件中部分文件名的批处理文件。它们全部在一个目录中,名为XYZ123_DETAILXXX_R.slddrw。我想用" - "替换_DETAIL部分。和_R部分用" -CM"。显然没有引号。但有一个复杂因素可能是我只想在.slddrw文件上进行此更改,而不是在该目录中对.sldprt文件进行此更改。我找到了其他脚本来删除部分文件名,但没有选择性替换。提前谢谢。

3 个答案:

答案 0 :(得分:0)

你走了。

Setlocal enabledelayedexpansion
Set "Old=_DETAIL"
Set "New=-"
Set "Old_=_R"
Set "New_=-CM"
for /f "tokens=*" %%a in ('dir /b /od *.slddrw') do (
    set File=%%~nxa
    set File=!File:%Old_%=%New_%!
    set File=!File:%Old%=%New%!
    ren "%%a" "!File!"
)
Pause&Exit

答案 1 :(得分:0)

请在执行实际重命名时删除回声:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%a in ('dir /b /od *.slddrw') do (
    set filename=%%~nxa
    set filename=!filename:_R=-CM!
    set filename=!filename:_DETAIL=-!
    echo ren "%%a" "!filename!"
)

答案 2 :(得分:0)

@echo off
 setlocal enableextensions enabledelayedexpansion

 for %%a in ("c:\somewhere\*_DETAIL*_R.slddrw"
 ) do for /f "tokens=1,2 delims=_" %%b in ("%%~na") do (
    set "newName=%%c" & set "newName=%%b-!newName:~6!-CM%%~xa"
    if not exist "%%~dpa!newName!" echo ren "%%~fa" "!newName!"
 )

还有一个。如果输出到控制台是正确的,请删除echo命令。