如何执行保存在变量中的代码?我正在尝试执行已保存在另一个文件中的 if 语句(该文件必须保留为文本文件)。有关如何仅从变量执行 if
语句的线索可能会有所帮助,因为我认为问题是它无法读取 %%s
。
文本文件包含:
if %var%==0301 (echo Yay)
批处理文件包含:
for /f "tokens=*" %%s in (code.file) do (
%%s
)
这通常通过将 code.file
中的所有内容设置为变量 %%s
来执行 code.file
中的代码,然后执行变量。
结果是这样的:'if'不被识别为内部或外部命令、可操作程序或批处理文件。
此方法适用于执行 echo
和 set
,但我需要它适用于 if
。
最佳答案
IF
仅在阶段 2 中被解析器检测到,但 %%s
将在稍后阶段扩展。
您需要使用百分比扩展,如本示例所示
for /f "tokens=*" %%s in (code.file) do (
set "line=%%s"
call :executer
)
exit /b
:executer
%line%
exit /b
但是对于您的示例:if %var%==0301 (echo Yay)
它永远不会说 Yay
,因为 %var%
永远不会被扩展。
这是因为%line%
已经是百分比扩展,它不会递归地工作。
这可以通过将 code.file 中的文本更改为来解决
如果!var! == 0301(回声耶)
这是可行的,因为延迟扩展发生在百分比扩展之后
或者一个更简单的解决方案:
copy code.file tmp.bat
call tmp.bat
del tmp.bat
关于for-loop - 批处理,如何执行存储在变量或txt文件中的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73378983/