¿Por qué el archivo por lotes ejecuta líneas diferentes a las que contiene?

¿Por qué el archivo por lotes ejecuta líneas diferentes a las que contiene?

Escribí esta línea en un archivo bat (haga una pausa solo para ver qué se escribió)

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

termina ejecutando esto

    start my_program -m y -f d_fix -z n

Como puede ver, la parte %s_% se elimina.
Intenté buscar si el % causó la lectura de las líneas de manera diferente, pero está bien al escribir cmd,
el programa iniciado obtiene argumentos incorrectos, ¿alguna idea sobre esto? gracias.

Respuesta1

Windows Cmd y MS-DOS Command.com se utilizan %para indicar variables de entorno. En su caso, %s_%se interpreta como una expansión de variable (que s_actúa como el nombre de la variable) y se expande a una cadena vacía.

Para conservar el %signo inalterado, utilice %%s_%%d_fix.

información relacionada