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
相关产品推荐
相关产品推荐

