CMD变量的问题

时间:2018-04-04 09:52:36

标签: batch-file cmd

我有3个.cmd脚本

  1. VariablesManagement

    SET numCamerasInMigration=0
    
  2. NameCameras

    FOR /L %%c IN (1,1,43) DO ( SET /a numCamerasInMigration=%numCamerasInMigration%+1) 
    echo %numCamerasInMigration%
    
  3. RunPrograms

    echo %numCamerasInMigration%
    CALL "VariableManagementTMB" :SET_VARIBALES
    echo %numCamerasInMigration%
    CALL "NameCameras"
    echo %numCamerasInMigration%
    PAUSE>nul
    
  4. 当前输出

      

    RuningPrograms

         

    禁用回声(BEFORE SET VARIABLES)

         

    0(设定变量后)

         

    43(IN NAMECAMERA)

         

    0(当他回到RUNPROGRAMS时)

         

    暂停

    我的问题:

    为什么变量会改变cmd namecameras中的值,但是当返回cmd runprograms时,它的“初始”值是什么?

1 个答案:

答案 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以消除回显的实际命令。