La función “substring de lote” ejecuta un comando en una cadena.
Estoy tratando de pasar comandos como argumento a mi script.
script:
bat
@echo off
echo %1%
set f=%1%
echo %f%
set f=%f:~1,-1%
echo %f%
output:
"echo foo && echo bar"
"echo foo && echo bar"
bar
echo foo
¿Por qué se ejecuta la segunda parte del comando en el argumento?
davy.ai
La segunda parte del comando en el argumento se ejecuta porque el argumento se está tratando como una cadena de texto y no como un comando. El script muestra toda la cadena (incluyendo la segunda parte) y luego manipula la cadena para eliminar las comillas antes de mostrar solo la primera parte del comando. Sin embargo, la segunda parte del comando todavía está presente en el argumento y se ejecuta por el símbolo del sistema después de que el script haya terminado de ejecutarse. Si quieres pasar un comando como argumento a tu script, debes utilizar el comando “call” para ejecutar el argumento como un comando dentro del script. Por ejemplo:
Esto ejecutará el comando pasado como primer argumento al ejecutar el script.