批处理文件中是破折号还是斜线?

批处理文件中是破折号还是斜线?

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

 shutdown -r -m \\server04 -t 01 -f 
 shutdown /r /m \\server04 /t 01 /f 

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

我找到了这个相关问题在 SO 上,它并没有真正提供何时使用其中一个的答案。那里的问题因为不是超级用户而受到很多否定。大多数意见建议他们使用 dash,但没有给出使用其中一个而不是另一个的坚实理由。

答案1

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

在几乎所有其他操作系统(例如:*nix 版本)中,官方/传统上都使用破折号 ( -)。

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

另一个(相关的)例如,正如 Daniel B 在他的评论中指出的那样,*nix 中的正斜杠用于文件路径分隔符,而 DOS/Windows 使用反斜杠 - 另一个根本区别,这使得 MS 可以(继续)使用正斜杠作为切换字符。

但实际上,这完全取决于程序员如何选择,而 DOS/Windows 应用程序程序员(包括在 MS 工作的程序员)通常具有使用其中任一种的能力,以便于来自其他系统的人使用,而且我相信这通常是出于个人喜好。

MS 以外的程序员有时完全不允许使用正斜杠。

好的简介:

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

...

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

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

答案2

您应该/在 Windows 和-类 Unix 中使用。不要忘记,相同命令的参数在 Windows 和类 Unix 系统中可能会有所不同。

答案3

Windows 中没有任何命令只使用破折号。甚至 arp 也可以使用斜线。

可以使用 dash 的命令基于 *nix 命令,例如 arp 或 shutdown。

对于关机,cmd 帮助取决于 windows 版本!在 XP 中,cmd 帮助显示关机 -?在 Win7 中,它显示关机 /?。MS 网络帮助用破折号显示。但 Windows 版本均接受。

使用 arp、XP 和 7 中的 cmd 帮助以及 Web 帮助,都以破折号显示。但它们可以接受斜线。

我认为微软从未重写过接受破折号的命令,只接受斜线。而你在评论中提到的想法是,你担心一个实现在使用-vs 时可能与另一个实现不同/ ,我不这么认为。你很难找到任何这样的例子,我怀疑这种情况从未发生过。微软根本不会这么做!

如果破折号在某个 Windows 版本中对某个命令有效,那么它在另一个版本中却无效(对于该命令),我会感到惊讶。如果您听说过这种情况,例如您看到了一个例子,那么您可以开始考虑如何知道使用哪个才能兼容 Windows 版本。尽管如此,您也可以使用斜线,因为它们似乎都接受它。

相关内容