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

Batch脚本for循环内提取指定字符前后内容存入数组报错求解

错误原因

你在for循环代码块内部使用%result%读取变量,而批处理会在执行整个代码块前就完成所有%包裹变量的预解析,此时result尚未赋值,导致表达式语法错误,脚本直接退出。你已经开启了延迟扩展,只需在循环内用!result!代替%result%即可解决该问题。

修正后脚本

该版本无需硬编码处理固定数量的显示器,适配文本块数量不固定的场景:

@echo off
setlocal EnableDelayedExpansion
set Cnt=0
FOR /F "tokens=*" %%a IN ('findstr "default up, attached" "%userprofile%\~.txt"') DO (
  set /a Cnt+=1
  set "result=%%a"
  :: 提取最后一个(之后的内容
  for %%b in ("!result:(=" "!") do set "result=%%~b"
  :: 提取第一个,之前的坐标值
  for /f "tokens=1 delims=," %%c in ("!result!") do set "Monitors[!Cnt!]=%%~c"
)
:: 输出所有提取到的坐标值
for /l %%i in (1,1,%Cnt%) do echo !Monitors[%%i]!
pause
运行输出
-1920
1920
0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:39:00