我试图在FOR循环中计算变量值,然后在调用可执行文件时将其重用为命令行参数。 我设法计算变量,但我无法传递给exe文件
完整代码:
SetParameters.bat
SET PAYLOAD_SIZE=1024
SET OPERATIONS_COUNT=20
SET THREADS=8
SET BULKSIZE=200
执行的bat文件
call 0_SetParameters.bat
SET MAX_EMPLOYEE_ID=0
setlocal enabledelayedexpansion
FOR %%n IN (1 2 4 8) do (
@SET /a MAX_EMPLOYEE_ID+=%OPERATIONS_COUNT%
echo !MAX_EMPLOYEE_ID!
Launcher.exe -P:%PAYLOAD_SIZE% -O:%OPERATIONS_COUNT% -N:test1 -T:%%n -BULKSIZE:%BULKSIZE% -MAX_EMPLOYEE_ID:%MAX_EMPLOYEE_ID%
)
echo!MAX_EMPLOYEE_ID! - 打印我需要的计算值,但是当我尝试将参数传递给exe文件时,变量等于0(初始变量值)。
我也试过
Launcher.exe -P:%PAYLOAD_SIZE% -O:%OPERATIONS_COUNT% -N:test1 -T:%%n -BULKSIZE:%BULKSIZE% -MAX_EMPLOYEE_ID:!MAX_EMPLOYEE_ID!
但这会传递字符串"!MAX_EMPLOYEE_ID!"而不是数值。 那么在调用exe文件时如何使用这个变量?
更新: 好的,我明白这里发生了什么。实际上一切正常,可执行文件使用计算参数调用,但输出到控制台是打印-MAX_EMPLOYEE_ID:!MAX_EMPLOYEE_ID!
调用可执行文件的正确方法是
Launcher.exe -P:%PAYLOAD_SIZE% -O:%OPERATIONS_COUNT% -N:test1 -T:%%n -BULKSIZE:%BULKSIZE% -MAX_EMPLOYEE_ID:!MAX_EMPLOYEE_ID!
答案 0 :(得分:0)
以下是一个证明您的代码有效的示例:它没有使用%% n变量,因为您的代码没有使用它。
@echo off
set OPERATIONS_COUNT=5
setlocal enabledelayedexpansion
FOR %%n IN (1 2 4 8) do (
SET /a MAX_EMPLOYEE_ID+=OPERATIONS_COUNT
echo !MAX_EMPLOYEE_ID!
echo Launcher.exe -MAX_EMPLOYEE_ID:!MAX_EMPLOYEE_ID!
)
pause