批处理:有没有办法设置它,以便在任何时间点任何变量等于它执行命令的东西?

时间:2015-01-11 00:05:19

标签: batch-file

基本上我的标题是什么。 有没有办法设置它,以便在任何时间任何变量等于它执行命令的东西?

1 个答案:

答案 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 endlocalthis page on DOS functions