我有3个.cmd
脚本
VariablesManagement
SET numCamerasInMigration=0
NameCameras
FOR /L %%c IN (1,1,43) DO ( SET /a numCamerasInMigration=%numCamerasInMigration%+1)
echo %numCamerasInMigration%
RunPrograms
echo %numCamerasInMigration%
CALL "VariableManagementTMB" :SET_VARIBALES
echo %numCamerasInMigration%
CALL "NameCameras"
echo %numCamerasInMigration%
PAUSE>nul
当前输出 :
RuningPrograms
禁用回声(BEFORE SET VARIABLES)
0(设定变量后)
43(IN NAMECAMERA)
0(当他回到RUNPROGRAMS时)
暂停
我的问题:
为什么变量会改变cmd namecameras中的值,但是当返回cmd runprograms时,它的“初始”值是什么?
答案 0 :(得分:1)
使用此代码尝试NameCameras
,请勿更改其他脚本。
@echo off
for /L %%c IN (1,1,43) do (
set /a numCamerasInMigration=numCamerasInMigration+1
)
echo %numCamerasInMigration%
通过运行RunPrograms
给我:
RuningPrograms
禁用echo(设置前)
0(设定后)
43(姓名中的回声)
43(RunPrograms中的最终回显)
提示:考虑set /?
表达式中的任何非数字字符串都被视为环境变量名称,在使用它们之前将其值转换为数字。 如果指定了环境变量名称但未在当前环境中定义,则使用值零。这允许您使用环境变量值进行算术运算,而无需键入所有这些%符号来获取它们的值。
另外,作为附注,请考虑在每个脚本的顶部添加@echo off
以消除回显的实际命令。