更新batch file中的命令行参数

是否有可能更新或replacebatch file中的命令行参数(如%1)?

示例代码:

rem test.cmd @echo off echo Before %1 IF "%1" == "123" ( set %%1 = "12345678" ) echo After %1 

预期结果:

 C:/>Test 123 Before 123 After 12345678 

实际结果:

 C:/>Test 123 Before 123 After 123 

不,你正在尝试的是不可能的。

可以模拟将原始批处理参数传递给子节点,也可以使用修改后的参数递归地调用相同的cmd,这些参数再次获得调用中提供的参数%1,%2 …。 但是这不是你要求的。

 rem test.cmd @echo off echo Before %1 if "%~1"=="123" ( call :test %1234 ) else ( call :test %1 ) goto :EOF :test echo After %1 

参数变量是保留的,受保护的变量,您不能自己修改其中一个变量的内容。

我建议你将参数存储在局部变量中,然后你可以做所有你想要的操作:

 @echo off Set "FirstArg=%~1" Echo: Before %FirstArg% IF "%FirstArg%" EQU "123" ( Set "FirstArg=12345678" ) Echo: After %FirstArg% Pause&Exit