批处理文件中的破折号或斜线?

Jam*_*ins 9 windows batch command-line

似乎破折号 - 或斜线 / 在批处理文件中同样有效。下面的两个例子同样有效。哪个是正确的?它取决于操作系统吗?如果是这样,我如何确定使用哪个?

 shutdown -r -m \\server04 -t 01 -f 
 shutdown /r /m \\server04 /t 01 /f 
Run Code Online (Sandbox Code Playgroud)

我的目标是编写一个批处理文件,该文件将访问多个 Windows 服务器并重新启动它们。最终结果还可以提供 ping 服务器并允许用户提供的关于重启服务器的选择。但我的问题旨在定义如何最好地格式化代码。

我在 SO 上发现了这个相关的问题,它并没有真正提供何时使用一个或另一个的答案。那里的问题因为没有成为超级用户而受到很多负面影响。大多数意见建议他们使用破折号,但没有给出使用一个而不是另一个的可靠理由。

Ƭᴇc*_*007 18

正式/传统上,在 DOS/Windows 中,命令行开关由正斜杠 ( /) 表示。

正式/传统上,几乎所有其他操作系统(例如:*nix 口味)都使用破折号 ( -)。

这是操作系统设计和使用方式之间的根本区别之一。

另一个(相关的),例如 Daniel B 在他的评论中指出的,*nix 中的正斜杠用于文件路径分隔符,而 DOS/Windows 使用反斜杠——另一个根本区别,它使 MS 能够(继续) 使用正斜杠作为开关字符。

但是真正取决于程序员来实现他们如何选择,并且 DOS/Windows 应用程序程序员(包括那些在 MS 工作的人)通常包括使用它们的能力,以便来自其他系统的人使用,而我当然经常是由于个人喜好。

MS 之外的程序员有时根本不允许使用正斜杠。

好的简介:

今天很难想象,但是微软 DOS 的原始版本——MS-DOS 1.0——在 1981 年发布时根本不支持目录。DOS 中包含的大多数实用程序都是由 IBM 编写的,他们使用了/ 字符作为“开关”字符

...

此处不同类型的斜线表示您指定的是选项还是目录路径。

Blurb 来源:为什么 Windows 使用反斜杠而其他一切都使用正斜杠

  • 好吧,由于正斜杠是 Linux 上的路径分隔符,因此在参数中使用它会相当不方便。还值得注意的是,单个破折号通常用于短选项(仅限单个字符),而两个破折号开始“详细”参数。 (4认同)