更新批处理文件中的命令行参数

时间:2013-10-18 17:27:33

标签: windows batch-file cmd

是否可以更新或替换批处理文件中的命令行参数(如%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

2 个答案:

答案 0 :(得分:3)

没有。你正在尝试的是不可能的。

可以模拟将原始批次参数传递给subrutine,或者使用修改后的参数递归调用相同的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

答案 1 :(得分:2)

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

我建议你将参数存储在局部变量中,然后就可以进行所需的所有操作:

@echo off

Set "FirstArg=%~1"

Echo: Before %FirstArg%

IF "%FirstArg%" EQU "123" (
    Set "FirstArg=12345678"
)

Echo: After %FirstArg%

Pause&Exit