跨平台的Windows脚本,Linux,MacOS X

我正在寻找windows,Linux,MacOS X的跨平台脚​​本(语言)。我厌倦了.bat / bash。

我想做一些事情,例如,locking工作站在自动login(我有这个在X-Window中,但解决scheme是非常丑陋的;现在,我想在MS Windows上,而不是那么丑陋:-)) 。
一般来说:自动化任务。

或者,我会更好的Windows脚本宿主?
也想到PowerShell,但这似乎是Windows – 只为我的口味。 像Python,Ruby这样的语言(Java?)能够与WSH交互(合理吗?)?

还有像DBUS,DCOM等的东西可以想象成图片的一部分。

目前我使用Java,.bat,bash,Ruby,Scala的混合体; 一些Excel的VBA。 有时变得相当丑陋。

我希望有一个跨平台的通用解决scheme,使用/使用原生的部分接近操作系统特定的。 就像Ruby驱动一些Windows特定的东西(只是一个猜测)。
你用什么?
TIA

Solutions Collecting From Web of "跨平台的Windows脚本,Linux,MacOS X"

我认为你在互相矛盾的边缘上玩耍,你会喜欢独立于平台的(值得赞赏的),但也要“接近于操作系统的细节”。

但是,如果你把重点放在平台独立性上,我一直在使用groovy(一种更友好的ruby相对于通用脚本)的想法。 当你需要的时候,你可以通过调用OS shell命令来获得特定于操作系统的行为。

我的动机有点不同:我发现groovy代码比bash更强大,但是我也需要一个好的多平台脚本工具来开发我正在开发的项目。

我是Lua的粉丝:

  • 语法是模糊的帕斯卡样,并在脚本中运行良好。

  • 精湛的功率重量比。 精湛的工程。 非常好的设计。

  • 具有ANSI C编译器的任何平台都极其便携。

  • GUI支持通过wxLua和其他绑定

  • 一些支持隐藏常见任务的操作系统差异,例如,Lua文件系统附件

  • 核心系统和库很简单,你可以理解你正在使用的所有东西,但是与bash / bat相比仍然有很好的优势。 表现力与Python或Ruby相当。

  • 你不会被图书馆和框架淹没,这可能是一个加号或减号。

  • 有一本很好的书: Lua的 Roberto Ierusalimschy的程序设计 ; 您可以免费在线阅读以前的版本 。

  • 性能击败TCL,Perl,Python,红宝石

  • 为了在x86硬件上实现更快的性能,还有LuaJIT。

  • 最后,这是洞中的王牌:如果遇到任何特定于平台的问题,可以很容易地编写特定于平台的C代码并动态地将其加载到Lua脚本中。 Lua的设计是考虑到这个任务,并做得非常好。 您也可以轻松地进入C性能(例如,计算MD5校验和)。

在过去的3到5年里,我一直在将脚本从bash / ksh / awk / sed / grep / perl逐渐迁移到Lua。 我对结果非常满意。

你可以试试Batsh

Batsh是一种编译为Bash和Windows Batch的简单编程语言。 它使您可以在所有平台上运行脚本,而无需任何额外的依赖。

Perl和Python几乎在每个平台上都可用

你可以在Tcl中编写你的脚本。

  • 语法简单,更接近你期望的脚本;

  • 它是跨平台的,并将在所有主要平台上运行;

  • 您可以在Tk中轻松地为您的脚本创建简单的GUI,这些GUI也可以在任何地方工作并使用本机控件;

  • 对于特定于Windows的函数,可以使用Twapi (Win32 API绑定)。

  • 你可以安装一个Tclkit,它是整个Tcl分发的单个文件。 没有冗长的安装过程或隐藏的文件或神秘的目录;

    • 您可以轻松地将一个Linux,Windows和Mac运行时间放在一个单一的闪存驱动器,所以即使没有本地安装一个,你总是有一个解释器。

就像Ruby驱动一些特定于Windows的东西一样

它当然可以在Ruby on Windows博客上找到很多示例,Pickaxe书中还有一个章节,其内容也很简单。

在shell中有类似UNIX和UNIX的平台的可能性,但是我不认为你所要求的是因为windows而在任何脚本语言中是可能的。

对于UNIX系统,你可以使用这个:

#!/bin/sh TYPE=`uname`; echo 'this is ' ${TYPE}; if [ ${TYPE} = HP-UX ] then bdf /var; elif [ ${TYPE} = Linux ] then df -h /var; elif [ ${TYPE} = FreeBSD ] then df -k /var; else echo "Unsupported OS - ${TYPE}" fi 

我希望它会帮助你!

资源

不知道你是否仍然需要它,但如果是这样,请尝试ant( http://ant.apache.org/ )。 这是一个跨平台的“脚本语言”。 基本上,一个ant文件是一个由JVM程序解释的xml文件。

我会用Mono的C#。