删除[]之间的所有文字

时间:2014-08-07 07:31:24

标签: string batch-file text special-characters

我正在寻找一个批处理文件,可以删除[]和()之间的所有字符以及所有删除()[]字符。

示例:

最终幻想IX(E)(第1碟)[SLES-02965] .bin

需要

最终幻想IX.bin

文件都有不同的名称。

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
FOR /f "delims=" %%a IN (
  'dir /b /a-d "%sourcedir%\*" ^|findstr /L "[ (" '
  ) DO (
  CALL :modify "%%a"
 )
)
GOTO :EOF

:modify
SET "name=%~1"
SET "build="
SET "wait="
:loop
IF NOT DEFINED name GOTO done
SET "char=%name:~0,1%"
SET "name=%name:~1%"
IF "%char%"=="%wait%" SET "wait="& GOTO loop
IF DEFINED wait GOTO loop
IF "%char%"=="(" SET "wait=)"& GOTO loop
IF "%char%"=="[" SET "wait=]"& GOTO loop
IF "%char%"==" " IF "%build:~-1%"==" " GOTO loop
SET "build=%build%%char%"
GOTO loop
:done
SET "build=%build: .=.%"
ECHO( REN "%sourcedir%\%~1" "%build%"
GOTO :eof

您需要更改sourcedir的设置以适合您的具体情况。假设([)]平衡。

答案 1 :(得分:0)

这应该比Magoo的解决方案更快,因为没有gotocall,外部命令为FINDSTR(如果文件名包含{{},则可能会失败1}}):

!