CMD BAT 批量重命名

一、语法格式

for /f "tokens=取值索引 delims=分隔符号集合" %%str in (待处理字符串) do(命令2)

参数

delims:分隔符集合,如果有空格空格放最后

tokens:取分隔后第n个元素

tokens=有时表示提取全部。
tokens=m表示提取第m列。
tokens=m,n表示提取第m列和第n列。
tokens=m-n表示提取第m列至第n列。
Tokens=*表示删除每行前面的空格。忽略行首的所有空格。
tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。
tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。

 

二、范例

1.分隔后去除字符

命令:

@echo off
for %%a in (*.jpg) do (
    for /f "tokens=2 delims=_" %%b in ("%%a") do ren "%%a" "%%b"
)

原始文件名:

X_22.jpg、XXXX_333.jpg、XX_4444.jpg、XX_1.jpg

执行后文件名:

22.jpg、333.jpg、4444.jpg、1.jpg 

===========================================

2.多分隔符

命令

@echo off
for %%a in (*.jpg) do (
    for /f "tokens=2 delims=_() " %%b in ("%%a") do ren "%%a" "%%b"
)

原始文件名:

1_2(测试 文件名)_3.jpg

执行后文件名:

文件名

===========================================

3.多分隔符多取值

 命令

@echo off
for %%a in (*.jpg) do (
    for /f "tokens=4,6 delims=_(). " %%b in ("%%a") do ren "%%a" "%%b.%%c"
)
pause

原始文件名:

1_2(测试 文件名)_3.jpg

执行后文件名:

文件名.jpg

 

@ECHO OFF
rem sss
set root_dir=%cd%
set root_to_dir=%cd%\new
for /f "tokens=1,2 delims=_" %%a in ('dir %root_dir%\*.jpg /b/s') do (
    ECHO %%a_%%b
    ECHO %root_to_dir%\%%b
    copy  %%a_%%b %root_to_dir%\%%b
)
pause

 

posted @ 2021-08-25 09:45  昨日微风  阅读(388)  评论(0编辑  收藏  举报