zの評価がfor文の()内を実行する前に行われるため、そのような動作になります。
()内は暗黙の裡にsetlocalされた状態になるので、zの代入値を取り出すこともできません。
| @echo off <br><br>for /f %%a in (list.txt) do call :Myfunc %%a <br><br>exit /b <br><br> <br><br>:Myfunc <br><br>echo a is %1 <br><br>set z=%1 <br><br>echo z is %z% <br><br>exit /b |
|---|
これならば、期待した動作になるでしょう。