Командная строка Windows (cmd.exe
) имеет необязательный параметр /s
, который изменяет поведение /c
(запустит определенную команду, а затем выйдет ) или /k
(запустите определенную команду, а затем отобразите приглашение оболочки). Этот параметр /s
, очевидно, имеет какое-то отношение к какому-то управлению тайной кавычкой.
Документы запутывают, но насколько я могу судить, когда вы делаете cmd /c
something
, а something
содержит кавычки, тогда по умолчанию cmd
иногда отделяет эти кавычки, а /s
говорит, чтобы он оставил их в покое.
Я не понимаю, когда удаление цитаты сломает что-нибудь, потому что будет необходимо только время /s
( "подавить поведение по умолчанию для котировки" ). Он удаляет только кавычки под определенным тайным набором условий, и одним из таких условий является то, что первым символом после /c
должен быть кавычка. Поэтому он не удаляет кавычки вокруг аргументов; он либо удаляет кавычки по пути к EXE, в котором вы работаете, либо по всей командной строке (или, возможно, около первой половины командной строки, что было бы странно).
- Если указан путь к EXE, например.
cmd /c "c:\tools\foo.exe" arg1 arg2
, тогда цитаты не нужны, и еслиcmd
хочет их удалить, то штраф. (Он не удалит их, если у пути есть пробел в имени - это еще один из тайных правил.) Я не могу представить никаких причин для подавления удаления цитат, поэтому/s
кажется ненужным. - Если вся строка командной строки цитируется, например.
cmd /c "foo.exe arg1 arg2"
, то кажется, что удаление цитат было бы необходимо, поскольку в системе не было EXE с именемfoo.exe arg1 arg2
; поэтому кажется, что отказ от цитаты с помощью/s
действительно нарушит ситуацию. (На самом деле, однако, это не нарушает вещи:cmd /s /c "foo.exe arg1 arg2"
работает нормально.)
Есть ли какая-то тонкость в /s
, которая ускользает от меня? Когда это когда-нибудь понадобится? Когда это будет даже иметь значение?