Командная строка 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, которая ускользает от меня? Когда это когда-нибудь понадобится? Когда это будет даже иметь значение?