bat批处理怎样去掉一个文件夹中所有txt文件名中的括号?

一个文件夹中的多个txt文件名称如下:(1)、(2)、(3)、(4)(5)、(6)、(7)、……(99999)
用bat把上面的文件名修改成:1 、2 、3 、4 、5、 6 、7 ……99999

@echo off&setlocal enabledelayedexpansion
for %%a in ("*(*)*.txt") do (
set "b=%%a"
set "b=!b:(=!"
set "b=!b:)=!"
if not exist "!b!" (ren "%%a" "!b!") else (
echo 存在一个重名文件,无法修改文件名 ) ) )

将当前文件夹所有txt文件名含有的括号替换成括号中的字符

追问

如果文件名中左括号的左面还有个空格,怎样也一起替换掉?即把文件名中的“ (”修改成空

追答@echo off&setlocal enabledelayedexpansion
for %%a in ("*(*)*.txt" "*(*)*.txt") do (
set "b=%%a"
set "b=!b: (=!"
set "b=!b:) =!"
set "b=!b:(=!"
set "b=!b:)=!"
set "b=!b:(=!"
set "b=!b:)=!"
if not exist "!b!" (ren "%%a" "!b!") else (
echo 存在"!b!"文件,无法重名"%%a") )

那个是中文的(,不是有个空格,没注意到提问中给的文件名也是中文括号,已经修改可以处理中英文的圆括号,并且去掉英文圆括号前后的一个空格

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-30
@echo off
for /f "delims=: tokens=1,2" %%a in ('dir /a-d /b *.txt ^| findstr/n .*') do ren “%%b” “%%a.txt”

重命名当前目录所有txt,不含子目录。命名从1开始递增
第2个回答  2013-10-30
@echo off &setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do set /a num+=1 &set "_!num!=%%i"
for %%j in (*.txt) do (
set /a b+=1
if defined _!b! (
for %%k in (!b!) do (
ren "%%j" "!_%%k!%%~xj"
set "_!b!="
)
)
)
pause
有多少个文件就把9改成多少个 就可以了!
第3个回答  2013-10-30
@echo off&setlocal enabledelayedexpansion
for /f "delims=*" %%a in ('dir/a-d/s/b "*.txt"') do (
set "b=%%~nxa"
set "c=%%~nxa"
set "b=!b:(=!"
set "b=!b:)=!"
set "c=!c:)=!"
set "c=!c:(=!"
if not exist "!b!" (ren "%%a" "!b!") else (ren "%%a" "1_!b!")
if not exist "!c!" (ren "%%a" "!c!") else (ren "%%a" "1_!c!" )

)
)
pause
相似回答