什么是Windows等效的UNIX shell脚本?

Mur*_*fer 14 windows shell command-line batch-file

我想要一个可调用其他程序的可执行文件.我在Linux中这样做的方法是使用一个简单的bash脚本,如下所示:

#!/bin/bash
echo "running some-program"
/home/murat/some-program arg1 arg2
Run Code Online (Sandbox Code Playgroud)

在Windows下执行此类操作的最佳方法是什么?

Sco*_*man 24

看看PowerShell,它是您在Unix中获得真正的脚本语言的最接近的.除此之外,对于简单的运行应用程序等简单的事情,请查看Windows命令脚本/ MS-DOS批处理文件.


Bog*_*dan 14

您可以使用旧的学校批处理文件(http://en.wikipedia.org/wiki/Batch_file),也可以使用全新的Windows PowerShell脚本(http://www.microsoft.com/technet/) scriptcenter/hubs/msh.mspx).

我使用批处理进行简单操作,使用PowerShell处理涉及数据处理的复杂脚本.


Joe*_*orn 10

Windows上有许多脚本选项:

  • 批处理文件
  • VBScript/CScript/JScript(与WMI结合使用时功能非常强大)
  • 电源外壳
  • 您可以安装Perl,Python或其他引擎
  • 例如,您可以通过Cygwin安装unix工具,以获得Windows中可用的大多数常见unix命令.
  • 既然我们都是(大多数?)程序员,那么就没有什么能阻止你制作.exe文件来做你想做的事了.


Eri*_*lin 7

您可以使用Windows批处理文件.在Wikipedia文章中查找更多信息.


Eri*_*lin 6

只要我们建议使用*nix命令行工具,我建议您查看Cygwin(http://www.cygwin.com),因为它模拟了类似*nix的环境.


Mar*_*rth 6

Windows NT系列操作系统(NT 3.51,NT 4.0,2000,XP,Vista)具有相当强大的命令外壳,即使它有点深奥.这个shell没有典型UNIX shell的强大功能,但它在Windows机器上无处不在,而且可以实现的目标非常惊人.一本很好的书就是Timothy Hill的Windows NT Shell Scripting.我总是发现Rob van der Woude的Scripting Pages是批处理文件的绝佳资源.

PowerShell是Microsoft在该领域的最新产品,它将脚本提升到一个全新的水平,让您可以访问.NET框架以及WMI,COM​​和Windows中任何其他界面的所有功能.这有一个相当陡峭的学习曲线,但它绝对是走的路,我认为它有可能成为微软世界中的基础技术技能之一(如RegEx,XPath等).一个很好的起点是Microsoft Windows PowerShell技术中心,但是有大量的资源可用于此.


gri*_*eve 5

我曾经使用批处理文件.对于上面提到的简单示例,我仍然这样做,但是越来越多的我一直在使用python来做这些事情.它具有跨平台工作的额外好处,可用于在多个平台上实际有意义的罕见脚本.

Python只是众多可用于此类事务的脚本语言之一.Perl,ruby或php可能更适合你的速度.我发现如果我想做一些比仅使用一些默认参数启动程序更复杂的东西,脚本语言会给我一个更丰富,更容易理解的语法.


Wed*_*dge 5

更新:哇,这现在已经过时了(尽管这是不可避免的)。Powershell 无疑正越来越多地成为 Windows 中自动化的首选语言。它具有任何 .net 语言(如 C#)的许多优点,并结合了任何优秀 shell 语言中存在的许多便利性,并且没有批处理文件的严重缺点。

就其价值而言,我在一家位于雷蒙德的大型软件公司见过的最受欢迎的选项(按受欢迎程度大致排序):

  • 批处理文件
  • 珀尔
  • Windows 脚本宿主 (Javascript)
  • 小前任

不太受欢迎:

  • 电源外壳

请注意,Perl 不需要安装,它只需要一些环境变量更新,因此很容易将完整的发行版与其他工具一起放入源代码控制系统中。

我个人的偏好是尽可能避免使用批处理文件,即使采用最仔细和最严格的流程,其成本效益也是不值得的。如果您使用批处理,您将永远不会得到令人满意的解决方案。Perl 和 Javascript 很容易使用,但存在一些麻烦的基本缺陷,还有很多不足之处,如果没有强有力的开发指南,这些方法很可能会导致低质量的代码。

Python 和 Powershell 是不错的选择,但我对它们还不够熟悉,更重要的是,很多人对它们不太熟悉。也许这不是一个足够好的借口。微小的 exe 也可能有很多问题,需要纪律和流程,以确保源始终签入,exe 符合某些 UI 规范(例如,如果您运行 -? 或 /?,它们会提供有用的帮助),它们有一个明显的所有者,更新 EXE 的过程是可发现的,等等。