6

バッチ ファイル内のコマンド ライン パラメータ (%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
4

2 に答える 2

4

いいえ、あなたがしようとしていることは不可能です。

元のバッチ パラメーターをサブルーチンに渡すことをシミュレートするか、変更されたパラメーターを使用して同じコマンドを再帰的に呼び出すことができます。これにより、呼び出しで提供されたパラメーター %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
于 2013-10-18T17:37:00.393 に答える
2

引数変数は予約された保護された変数です。これらの変数の内容を自分で変更することはできません。

引数をローカル変数に保存することをお勧めします。そうすれば、必要なすべての操作を実行できます。

@echo off

Set "FirstArg=%~1"

Echo: Before %FirstArg%

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

Echo: After %FirstArg%

Pause&Exit
于 2013-10-18T19:03:57.913 に答える