我正在寻找一个批处理文件,可以删除[]和()之间的所有字符以及所有删除()[]字符。
示例:
最终幻想IX(E)(第1碟)[SLES-02965] .bin
需要
最终幻想IX.bin
文件都有不同的名称。
答案 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的解决方案更快,因为没有goto
和call
,外部命令为FINDSTR
(如果文件名包含{{},则可能会失败1}}):
!