一个适用于Windows的脚本语言?

6
我在Windows上工作,经常需要编写一些脚本来操作文件或基本的字符串操作。目前,我使用PHP来完成这个任务,但是为此使用LAMP堆栈似乎过于复杂了。我尝试过AutoHotkey之类的东西,但是语法和功能都很可怕。
因此,我正在寻找一个具有以下特点的脚本语言: a)合理的语法 b)大量内置库、函数等 c)最小化设置。最好能够从我选择的应用程序启动器中编写和运行脚本,如Executor。

5
https://dev59.com/1kjSa4cB1Zd3GeqPElpy https://dev59.com/D0XRa4cB1Zd3GeqPveMw https://dev59.com/kUXRa4cB1Zd3GeqPogs2 https://dev59.com/UEbRa4cB1Zd3GeqP1Y6Q - Jørn Schou-Rode
8个回答

14

Windows PowerShell™ 是一个基于任务的命令行Shell和脚本语言,专为系统管理而设计。建立在.NET Framework上,Windows PowerShell™ 帮助 IT 专业人员和高级用户控制并自动化管理运行在 Windows 操作系统上的应用。

Microsoft Windows 脚本宿主(最初称为 Windows 脚本宿主,但为第二个版本更名)是一项自动化技术,为 Microsoft Windows 操作系统提供了可与批处理文件相媲美但支持的特性更广泛的脚本能力。


9
PowerShell提供了可脚本化的功能,支持所有.NET库以及更多功能。 - leeeroy

6
Mafutrct提供了非常好的回答; 如果您要开始使用Windows脚本,则应该绝对从PowerShell开始。内置命令、PowerShell扩展和使用.NET运行时的能力确保满足所有脚本要求。我只希望PowerShell有一个更好的脚本语言,如果它是JavaScript就好了 :(。
我想指出WSH仍然是Windows上可行的脚本环境。我继续使用它的原因是:
  • JavaScript既是功能性的,又是原型的,可以轻松编写复杂的脚本
  • 加入WMI,几乎可以轻松完成与Windows相关的所有任务。这对于网络和系统管理任务非常有用
  • WSH脚本可以方便地在窗口和控制台上运行(即通过wscript和cscript调用)
  • 编写脚本就像打开记事本、输入脚本、将其保存为js(或.vbs、.wsh)文件并双击保存的文件一样容易
  • 虽然它不再是严格的脚本,但.js文件可以使用.NET的Javascript编译器:jsc.exe编译为CLR。像PowerShell一样,这提供了对整个.NET框架的访问

我最近几周编写的一些脚本包括:

  • Pulling data from MS SQL server, creating an Excel sheet and pushing the data into it, and mailing it to a client
  • Formatting, parsing and filtering thousands of lines of VOIP switch log files and vector scripts
  • Using Ajax to pull data from a remote server, calling a web-service and passing the data to it
  • I spook my co-workers when they use my laptop by remotely “speaking” to them via the speakers with a script using Microsoft’s Speech API. Here’s the sample code:

    var sapi = new ActiveXObject("SAPI.SpVoice");
    sapi.speak("hello world");
    

1
我曾经使用Windows上的WSH和Javascript完成了一个函数式编程课程的所有作业。在emacs中编辑! - Cheeso
这个课程在线上是否可用? - Abbas
1
这是UC伯克利分校的CS-61A课程。http://www.youtube.com/watch?v=zmYqShvVDh4视频中显示为2008年春季,但他使用的计算机看起来像是1988年春季的。不时地,讲师也会说出“你不能在C#或其他现代语言中进行[函数式编程]”。这是非常错误的,因为C#和JavaScript都具有良好的函数式特性,但我会原谅他,因为他被困在1988年,那时这些语言还没有被发明。我用WSH + JavaScript完成了所有作业。 - Cheeso

2
你可以在没有完整的LAMP堆栈的情况下使用PHP。如果你在Windows上运行,肯定不需要“L”!
我个人会选择Strawberry Perl。虽然它没有大量内置库,但它有CPAN

2

当您尝试使用代码页65001将Unicode UTF-8输出到控制台时,Python会崩溃。 - hippietrail

1

Perl,可以选择“真正”的Win32版本(ActiveState或Strawberry Perl),也可以选择Cygwin变体。


6
“合理的语法”是要求之一 ;) - Thomas

1

如果你有LAMP世界的经验,并且你主要需要文件和字符串操作,我推荐使用LuaLua文件系统。这是一个完全不同于设计空间极端的选择:

  • 强烈的跨平台性。Lua本身(但不包括LFS)可以扩展到手持设备、Palm Pilots等。

  • 非常简单、干净的设计。功率重量比令人难以置信。

如果你解决的问题不是特定于Windows的,并且有任何可能想在其他平台上寻求类似的解决方案,那么Lua将是一个很好的选择。

Lua也非常容易学习(没有什么是可怕的),可以编译任何C编译器,由一本优秀的书籍支持,并且有一个一站式的本地Windows实现。


0

Rebol很不错。可执行文件只有几百KB,无需安装,可以做GUI和控制台的东西。它可以访问文件、URL、执行程序等等。语法真的非常简洁;Rebol有一些最整洁的oneliners.. :)


0

不妨试试 Python。它是跨平台的,语法清晰,易于安装,有很多“内置电池”模块(如果没有,可以通过Pypi库来获取,相当于Perl的CPAN)。


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