¿Qué hace una comilla simple en los archivos por lotes de Windows?

Recientemente ejecuté un comando en Windows cmd con comillas simples y descubrí que no se comportó como esperaba.

De intentar google “comillas simples por lotes versus comillas dobles” He encontrado algunos artículos donde la gente preguntaba si las ventanas trataban comillas simples como comillas dobles, y sobre cómo bash trata las comillas simples y las comillas dobles de manera diferente. Sin embargo, no pude encontrar fácilmente una explicación explícita de lo que hacen las comillas simples en los comandos de lotes de Windows.

Entonces, ¿qué hacen las comillas simples en los archivos por lotes de Windows? ¿Realizan algún tipo de funcionalidad de cotización?

El procesador de comandos cmd.exe no utiliza en absoluto las comillas simples, excepto para encerrar el comando para ejecutar dentro de una statement FOR / F:

 for /f %%A in ('someCommand') do ... 

O para especificar una cadena para procesar por FOR / F si se usa la opción USEBACKQ:

 for /f "usebackq" %%A in ('some string') do ... 

Todas las demás citas manejadas por cmd.exe se realizan con comillas dobles. Sin embargo, hay utilidades de Windows (comandos externos) como WMIC que usan comillas simples para sus propios fines de cotización. Pero no hay un estándar: cada utilidad es libre de tener su propia interpretación de comillas simples.

Las reglas inconsistentes de escape y cotización utilizadas por cmd.exe frente a varias utilidades de línea de comandos a menudo hacen que sea un desafío descubrir la syntax correcta necesaria para cualquier situación dada.

Aquí hay algunas notas importantes sobre el uso de comillas dobles " con cmd.exe.

  • Las comillas dobles son una máquina de estado simple. El primero " enciende las cotizaciones, el siguiente lo apaga.

  • Todos los caracteres especiales se tratan como valores literales cuando se los cita, excepto los caracteres % y siempre, y ! carácter si la expansión retardada está habilitada, y el carácter ^ si la expansión retardada está habilitada y ! también aparece en algún lugar dentro de la línea.

  • Si la cotización está desactivada, puede escapar de un " como ^" para evitar que se active la cotización. Pero una vez que la cotización está activada, no se puede escapar al cierre " . La siguiente " siempre se volverá a cotizar.