Windows 批处理脚本用于从文件夹名称中删除括号和字符

Windows 批处理脚本用于从文件夹名称中删除括号和字符

我有许多文件夹的名称中包含括号。我想要一个 Windows 批处理脚本来递归重命名不带括号的文件夹。我只看到可以对文件执行此操作的脚本,但不能对文件夹执行此操作。

文件夹名称示例:

  • c:\folder\John (Williams) Doe
  • c:\folder\Mike (Lee) Smith
  • c:\folder\Jane Doe(罗伯茨)
  • c:\folder\(Louis) Janet Taylor

改成:

  • c:\文件夹\John Doe
  • c:\folder\Mike Smith
  • c:\文件夹\Jane Doe
  • c:\folder\Janet Taylor

我目前有以下脚本,但它会删除左括号后的所有内容。

pushd "c:\folder\"
for /d %%i in (*.*) do for /f "delims=(" %%j in ("%%~i") do if "%%~i" neq "%%~j" ren "%%~i" "%%~nj"
popd

先感谢您。

答案1

@echo off && pushd "c:\folder\"

for %%G in (^) ^()do for /f delims^= %%i in ('dir /a:d /s /b ^| findstr "%%~G"
    ')do set "_name=%%~nxi" && cmd.exe /v:on /c rename "%%~fi" "!_name:%%~G=!"

popd

答案2

对我来说@Io-oI 的答案不起作用,但请帮我得到它,我只需要一点小小的修复......

@echo off

SETLOCAL ENABLEDELAYEDEXPANSION

pushd "c:\folder\"

for %%G in ( ^) ) do (
    for /f delims^= %%i in ('dir /a /s /b ^| findstr "%%~G"') do (
        set "_name=%%~nxi" && cmd.exe /v:on /c rename "%%~fi" "!_name:%%~G=!"
        )
    )


for %%G in ( ^( ) do (
    for /f delims^= %%i in ('dir /a /s /b ^| findstr "%%~G"') do (
        set "_name=%%~nxi" && cmd.exe /v:on /c rename "%%~fi" "!_name:%%~G=!"
        )
    )


popd

相关内容