是否可能在批处理文件中更新或替换命令行参数(例如%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
是否可能在批处理文件中更新或替换命令行参数(例如%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
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
%1
指的是启动批处理文件时传递的第一个参数。除非退出批处理文件并使用不同的参数重新启动它,否则这是不可能的(也没有合理的理由想要这样做——如果你需要不同的值,在批处理文件内部给一个新变量赋值然后改变那个新变量即可)。 - Ken White