基本上我的标题是什么。 有没有办法设置它,以便在任何时间任何变量等于它执行命令的东西?
答案 0 :(得分:0)
如果不知道自己希望实现什么目标,很难知道什么对你有用。但是,我想到了一个潜在的解决方案。对于您要观看的变量,您可以set "varname=value"
而不是简单地调用call :set varname value
,然后使用子程序来执行观看。这是一个例子:
@echo off
setlocal
set /a foo = 10, loop = 1
:loop
call :set foo "%foo% * %loop%"
set /a loop += 1
goto loop
:: End main script / begin :set subroutine
:set <var_to_set> <expression>
setlocal
set /a test = %~2
:: watch for %foo% to have a value greater than 50000
if %test% geq 50000 (
echo %~1 equals %test%. Press any key to exit.
>NUL pause
exit
)
endlocal & set "%~1=%test%"
goto :EOF
当然,这比for /L
循环效率低得多,但它应该证明概念证明。 :set
子例程有效地监视%foo%
以达到某个值,然后执行操作。
有关使用子例程设置变量值的更多示例,请参阅this page on endlocal
和this page on DOS functions。