バッチファイルはなぜ、含まれている行とは異なる行を実行するのか

バッチファイルはなぜ、含まれている行とは異なる行を実行するのか

この行を bat ファイルに入力しました (入力内容を確認するために一時停止します)

    start my_program -m y -f %s_%d_fix -z n
    pause

結局これを実行することになる

    start my_program -m y -f d_fix -z n

ご覧のとおり、%s_% の部分は削除されています。
% が原因で行の読み取りが異なっているかどうかを確認してみましたが、cmd に入力すると
起動されたプログラムが誤った引数を取得するだけで問題ありません。これについて何かご意見はありますか? ありがとうございます。

答え1

Windows Cmd および MS-DOS Command.com は、%環境変数を示すために使用されます。あなたの場合、%s_%は変数の展開 (s_変数名として機能) として解釈され、空の文字列に展開されます。

符号を変更せずに保持するには%、 を使用します%%s_%%d_fix

関連情報