Fortranでコンパイルされた実行可能ファイルを繰り返し実行するバッチファイルを書き込もうとしています。通常、Windowsコマンドプロンプトに移動し、「Model.exe」と入力します。これにより、DOSプロンプトのコマンドウィンドウに必要なファイル名を直接入力するようにユーザーに求めるDOSコマンドウィンドウが表示されます。
このビットを実行するバッチファイルを作成し、この手順を繰り返して、手動で実行する代わりに10回のシミュレーションを連続して実行できるようにします。この種のシェル操作はLinuxでは簡単ですが、私はこれを利用できません。
私の擬似コードは次のようになります。
/ L %% run in(1,1,10)do
(set str = Sim %% run
echo。%str%> input.txt
Model.exe <input.txt)
これは、次の手順に分解できます。
set str = Sim1を使用して、これを直接「input.txt」にエコーすると、上記を機能させることができますが、これをループとして機能させることはできません。私は何かが足りないのですか?
宜しくお願いします、
ベン
うーん、cmd.exeの変数展開の扱いは醜いです。したがって、次のように「遅延拡張」が必要です。
setlocal enabledelayedexpansion
for /L %%i in (1,1,10) do (
set str=Sim%%i
echo !str! > input.txt
Model.exe < input.txt)
endlocal
(もちろん、この特定のケースでは、echo Sim%%i > input.txt
とだけ言うことができますが、別の変数を経由するのには十分な理由があると思います。)