类似于.bat的脚本可以在Windows、Mac和Linux上运行吗?

6

我有一个批处理脚本,想在Windows/Mac/Linux上运行,但是我了解到.bat只能在Windows上运行。那么我该如何让这个脚本在Mac和Linux上运行呢?或者,有哪种类型的脚本可以在这三个系统中都运行?


查看此答案以获取一些语法技巧,这些技巧可能会帮助您达到目标;https://dev59.com/-GMm5IYBdhLWcg3wlfpS#17623721 - Ferdy Pruis
7个回答

4
如果您不想学习像C这样的语言,我建议您选择Python作为多平台脚本语言。它易于学习,并且具有许多通用的、跨平台的库和函数。
您需要在Windows上安装它,也可能需要在OS X上安装。但这并不难。

那么这是否意味着当我将该脚本分发给用户时,我必须要求他们安装Python?这比我所追求的要麻烦得多。 - sameold
是的。但就像其他人所说的那样,没有一种可以直接在所有平台上工作的脚本语言。您需要使用更跨平台的语言,例如C,C ++或Java,然后分发特定于平台的可执行文件。 - Kris Harper
每个版本的Linux和OSX都已经安装了Python。他们可能需要在Windows上安装它,但是您也可以使用py2exe将其打包为exe,使用户无需安装Python运行时。 - Casey

4

没有这样的东西。Windows不支持Mac/Linux使用的unix-style shell scripts,而Mac/Linux也没有支持.bat文件所需的command.com/cmd.exe。

有一些方式可以模拟此功能,例如在Mac/Linux上运行Wine,在Windows上运行Cygwin,但这需要进行其他处理。


3
  1. Python
  2. 在Windows上使用Bash + MSYS
  3. Groovy / Beanshell / Javascript ... 配合相应的解释器

Windows已经包含了一个JavaScript解释器,它是Windows脚本宿主的一部分。http://en.wikipedia.org/wiki/Windows_Script_Host - Jonathan

2
没有一种Shell脚本语言可以在这三个平台上都使用,而不需要在其中一个平台上安装任何东西。 在Windows的情况下,安装像Linux和OSX上可用的Bash之类的东西是没有多大用处的,因为它永远不会像在OSX和Linux上那样与Windows无缝集成,并且永远无法像.bat或PowerShell文件一样完全集成地执行所有操作。
个人认为,当我需要跨平台脚本时,我会选择Python。

我不会说在Windows上安装Bash是无用的。安装一个真正的本地端口将是一个问题,因为它不会掩盖路径分隔符差异、外部工具的可用性等问题。这就是Cygwin的作用所在,它可以掩盖所有这些问题。当然,这在复杂性和安装占用空间方面的成本相当大,但是一旦支付了这个成本,你所拥有的远非无用。 - Warren Young
@WarrenYoung 我并没有说“无用”,我是说“不太有用”。我已经解释了为什么这样说。 - user177800

1

.bat脚本只能在Windows上运行。我建议保留你已经为Windows编写的bat脚本,并创建一个专门用于Linux和OSX的bash脚本。

请不要让我安装Cygwin工具来运行脚本。


0

你可以编写一个批处理文件,让它在Windows上从cmd解释,在Linux上从sh解释

但是两者之间没有太多共同的语法,所以你将被迫从那一点开始运行特定于操作系统的脚本


0
如果您熟悉JavaScript,您可以在每个平台上安装Node.js,然后编写命令行工具并像这样运行:
> npm install yourtool-cli -g
> yourtool [args]

注意:将后缀-cli添加到命令行节点包名称是很常见的做法。选项-g用于全局安装而不是本地文件夹。

文件系统模块让你可以做很多批处理/脚本文件可以做的事情,例如。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接