相关疑难解决方法(0)

什么是`cmd/s`?

Windows命令提示符(cmd.exe)有一个可选/s参数,它修改/c(运行特定命令然后退出)或/k(运行特定命令然后显示shell提示符)的行为.这个/s参数显然与某些神秘的引用处理有关.

文档令人困惑,但据我所知,当你这样做cmd /csomething,并且something包含引号时,默认情况下cmd有时会删除这些引号,并/s告诉它不要管它们.

我不明白的是,当引用删除会破坏任何东西,因为这是唯一的时间/s("抑制默认的引用删除行为")是必要的.它只删除某些神秘条件下的引号,其中一个条件是/c必须是引号之后的第一个字符.因此,它不会删除参数周围的引号; 它要么删除你正在运行的EXE路径周围的引号,要么删除整个命令行周围的引号(或者可能在命令行的前半部分周围,这将是奇怪的).

  • 如果引用EXE的路径,例如cmd /c "c:\tools\foo.exe" arg1 arg2,则引号是不必要的,如果cmd想要删除它们,那很好.(如果路径在名称中有空格,它将不会删除它们 - 这是另一个神秘的规则.)我无法想象有任何理由抑制引用删除,所以/s似乎没必要.
  • 如果引用整个命令行,例如cmd /c "foo.exe arg1 arg2",那么似乎删除引号是必要的,因为foo.exe arg1 arg2系统上没有命名的EXE ; 所以看起来选择退出引用删除使用/s实际上会破坏事情.(实际上,它并没有破坏事情:cmd /s /c "foo.exe arg1 arg2"工作得很好.)

是否有一些微妙的东西让/s我不知所措?什么时候有必要?什么时候会有什么不同?

windows command-prompt

29
推荐指数
2
解决办法
7万
查看次数

标签 统计

command-prompt ×1

windows ×1