场景
很多文件有很多中括号等字符,想要去掉。 但是又不像linux有rename语法。
方案
新建文本文档,输入内容:
@echo off
setlocal enabledelayedexpansion
set "str=["
for /f "delims=" %%i in ('dir /b *.doc *.xls) do (set "var=%%i" & ren "%%i" "!var:%str%=!")
set "str=]"
for /f "delims=" %%i in ('dir /b *.doc *.xls) do (set "var=%%i" & ren "%%i" "!var:%str%=!")
然后修改修改后缀名为.bat
,复制到需要修改文件的目录,双击即可。
报错 存在一个重名文件,或是找不到文件
如果之前没见过,会感觉很莫名其妙。
其实有个隐藏规则,新文件名不能带冒号 :
。
如果用的是全路径,那么名称前面带有冒号就会报错。
for循环遍历目录
可使用for /f或for /r两种形式。
for /f形式需要遍历其它目录时,可在前后添加pushd/pop进行,或在dir中的匹配符前输入目录路径
for /f %%i in ('dir /s /b *') do (
echo %%i
)
for /r形式需要遍历其它目录时,只需将根目录参数%cd%替换成对应的目录路径或遍历即可
for /r %cd% %%i in (*) do (
echo %%i
)