Quiero correr lo siguiente en secuencia de comandos por lotes donde se toma un argumento (una ruta)escape "comillas dobles" en el interior de la entrada del lote de parámetros
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
pero el argumento %1
ya contiene un "
(porque es un camino , transmitido por el menú contextual Enviar a - No tengo mucho control sobre esto). Así que cuando el comando se ejecuta en el archivo por lotes se ejecuta la siguiente manera:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
Así que, obviamente, tengo que escapar de las "
s creados por %1
. ¿Cómo realizo la manipulación de cadenas sobre %1
de modo que escapó de las comillas?
He editado la pregunta para mayor claridad – laggingreflex
¿Qué pasa si% 1 es una ruta que contiene espacios? –
¿Cuándo usa '" "' sobre '\" '? Encuentro que los archivos por lotes realmente solo escapan con' "" 'y la versión' \ "' es solo para programas no por lotes ('runas' codificados en C++ o algunos lenguaje que reconoce \ como un carácter de escape). Entonces, solo usamos '\" 'cuando pasamos variables a programas que no son por lotes y' "" 'cuando pasamos a otras secuencias de comandos por lotes (o funciones de proceso por lotes (por ejemplo, parámetro 'CALL: function') con '' EscapedQuote '') –