批处理笔记(11) - 去除指定字符之前或之后的文件名

本篇熟悉"tokens=1-3 delims=.-"结合操作

需要提前调整截取范围分割字符过滤文件类型文件原名新命名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
setlocal enabledelayedexpansion
title 去除指定字符之前或之后的文件名 by:小可(xianghongai@gmail.com)
@echo 需要提前调整截取范围,分割字符,过滤文件,调整文件前后名
rem tokens=有时表示提取全部。
rem tokens=m表示提取第m列。
rem tokens=m,n表示提取第m列和第n列。
rem tokens=m-n表示提取第m列至第n列。
rem tokens=*表示删除每行前面的空格。忽略行首的所有空格。
rem tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。
rem tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。
rem delims指明点号、减号、空格为分割符,默认是空格和tab为分割符,delims==及delims=表示不要分割符
for /f "tokens=1-3 delims=.-" %%i in ('dir /b /a-d *.png') do (ren "%%i-%%j.%%k" "%%i.%%k")
pause >nul
exit

作用到子目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@echo off
setlocal enabledelayedexpansion
title 去除指定字符之前或之后的文件名 by:小可(xianghongai@gmail.com)
rem 需要提前调整截取范围,分割字符,过滤文件,文件原名、新命名

cd /d %~dp0

@echo 将 [abc_abc-中文提示.png] 重命名为 [abc_abc.png]
@echo --------------------------------------------------
@echo 影响当前目录、子目录带 - 字符的 png 文件!谨慎操作
@echo 建议只在单独的新建目录操作!
@echo --------------------------------------------------
@echo 按Enter键继续,退出直接关闭窗口
pause >nul

for /f "usebackq tokens=1-3 delims=.-" %%a in (`dir /b /a-d *.png`) do (ren "%%a-%%b.%%c" "%%a.%%c")
@echo ...
@echo ================================================== 当前目录处理完毕
for /f "usebackq delims=" %%i in (`dir /ad /b /s^|sort /r`) do (
for /f "usebackq tokens=1-3 delims=.-" %%a in (`dir /a-d /b "%%i\*.png"`) do (
ren "%%i\%%a-%%b.%%c" "%%a.%%c") )
@echo ...
@echo ================================================== 所有子目录处理完毕
@echo 按Enter键退出
pause >nul
exit

(本篇结束)

许可协议:自由转载-保持署名-非商业性使用-禁止演绎 (CC BY-NC-ND 4.0)

By 小可 from https://xinlu.ink/tech/batch-in-action-11-removing-a-text-after-and-before-specific-characters-in-files-names.html