67836
例えば以下のようなモノを作成します。

```

    @ECHO OFF
    SET A=HOGE1
    SET /A %A%EGOH+=1
    ECHO %HOGE1EGOH%
    PAUSE
    
```

ECHO には 1 と正しく表示されます。  
しかしこれは『%A%』が『HOGE1』であるが為に動作しています。  
そこで

```

    ECHO %A%EGOH
    PAUSE
    
```

例えばこの様な書き方で 1 を表示させたいのですが、このままでは動作しません。  
どのように記述すれば良いのでしょうか？
CC BY-SA 4.0
2020-06-20T09:45:09.460
67832
2020-06-21T10:51:45.540
31483
question
batch-file
CMDで変数名に変数を入れた場合の表示方法
[`SETLOCAL ENABLEDELAYEDEXPANSION`](https://docs.microsoft.com/en-us/windows-
server/administration/windows-
commands/setlocal)を使うと遅延評価が使えます。遅延評価は`!変数名!`と記述します。つまり`!%A%EGOH!`と記述すると`%A%`が展開されて`!HOGE1EGOH!`となり、遅延評価により`1`が表示されます。

```

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    SET A=HOGE1
    SET /A %A%EGOH+=1
    ECHO !%A%EGOH!
    PAUSE
    
```
CC BY-SA 4.0
2020-06-20T12:02:52.090
67836
2020-06-20T12:02:52.090
4236
67832
answer
参考までに`setlocal`を使わない場合こんな方法があります。

```

    @ECHO OFF
    SET A=HOGE1
    SET /A %A%EGOH+=1
    CALL ECHO %%%A%EGOH%%
    PAUSE
    
```
CC BY-SA 4.0
2020-06-21T10:51:45.540
67867
2020-06-21T10:51:45.540
8324
67832
answer