You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CMD/BAT脚本中移除文本里括号内的所有内容?

批处理移除文本中括号及内部内容的解决方案

批处理原生字符串替换不支持正则或通配符匹配(你尝试的!string:(*)=!写法无效),要覆盖所有测试场景,需通过循环迭代逐步移除括号及内部内容,直到字符串中无括号为止。以下是可行的实现代码:

@echo off
setlocal enabledelayedexpansion

:: 逐行读取目标文件
for /f "delims=" %%a in (test.txt) do (
    set "line=%%a"
    :process_loop
    :: 检查当前行是否包含左括号
    echo !line! | findstr /C:"(" >nul
    if not errorlevel 1 (
        :: 拆分左括号前的内容
        set "left_part=!line:(=" & set "right_part=!"
        :: 拆分右括号后的内容
        set "right_part=!right_part:*=)!"
        :: 拼接得到移除括号段后的新行
        set "line=!left_part!!right_part!"
        goto process_loop
    )
    :: 仅输出非空行(过滤整行都是括号的场景)
    if not "!line!"=="" echo !line!
)
endlocal

代码说明

  • 启用enabledelayedexpansion确保循环内变量能动态更新
  • 用findstr判断行内是否还有括号,驱动循环处理
  • 通过字符串拆分技巧,精准截取括号前后的有效内容并拼接,彻底移除括号及内部文本
  • 最后过滤空行,对应整行均为括号的测试场景

覆盖测试场景验证

  1. 输入可用子串 (括号内需忽略的文本) → 输出可用子串
  2. 输入(括号内需忽略的文本) 可用子串 → 输出可用子串
  3. 输入(括号内需忽略的文本) 可用子串 (另一部分需忽略的文本) → 输出可用子串
  4. 输入(整行需完全忽略的文本) → 无输出(空行被过滤)

可选优化(移除首尾冗余空格)

如果需要清理处理后行的首尾空格,可在输出前添加以下代码:

for /f "tokens=*" %%b in ("!line!") do set "line=%%b"

内容的提问来源于stack exchange,提问作者jeffp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:47:28