假设有几个项目主要由智能实习生维持,最终在一段时间后离开。 脚本在关键部分被用在这里和那里,例如,备份数据库,重命名,压缩,通过ssh移动,解压缩,然后用不同的设置恢复。 你知道,脚本的东西。
应用程序的编程语言已经设置好了,但脚本的编程语言已经放松了。 目前可能是bash和.bat文件的健康组合,也可能是一些Perl。
1)为了避免语言扩散,2)因为我不想强迫未来的Windows程序员,我想设置一个“官方”的脚本语言。
Google为此挑选了Python,它以可读性强,易于学习和拥有良好的库而闻名; 然而,与C语言,Pascal或Ruby相比,我个人并不觉得它可读。
无论如何,如果你被迫在Windows机器上使用一种脚本语言(如果你想用Cygwin的话)所有的脚本,你会喜欢它,为什么?
相关的宗教战争:
PowerShell – 从头开始设计为Windows脚本语言,并且可以挂接到CLR以获得高级功能。
(是的,我意识到这不会在cygwin下运行…但为什么这是一个要求?)
我将尝试提供一种替代方法 – 即使在Windows版本上,JavaScript和VBScript也能正常工作,而且它们不需要像PowerShell那样的单独安装。 ;)当然,PowerShell拥有更多的功能 :P
当我编写跨平台的产品安装程序时,为Linux / Mac / Solaris等编写UNIX shell脚本非常简单,但是在BAT中尝试执行相同的任务就像是在黑暗中,在水下,你的背部。 我不能强调英美烟草公司的脚本是对人类的一种破坏。
所以我听说PowerShell让我感到高兴。 这对Windows开发人员来说是一个救命恩人。 唯一的麻烦是,我相信它仍然是一个单独的安装,它是默认情况下不可用(我读过它将在Windows server 2008和Windows 7)。
呵呵,只用微软20年的时间就可以用UNIX shell取代BAT脚本,所以我想我应该不会太忘恩负义! > 😛
在这里获取PowerShell的安装程序:
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/download.mspx
我希望你给Python一个机会。 起初对“C”程序员来说看起来有点奇怪,但它很容易理解,更重要的是易于记忆。 你将有不同的技能水平的实习生使用和修改代码,所以你想要的东西,可以从广泛的用户基础。 如果你要去麻烦安装新的东西,为什么选择PowerShell这将是任何人使用它的死胡同。
电源外壳。 它具有广度和深度,并得到全面支持(现在和将来)。比如Cygwin。
嘎。 我打算说“PowerShell”,但我忙于编写PowerShell来发送我的答案,其他两个人打败了我。
我在Windows中遇到的最好的脚本语言是AutoHotKey。 任何在Windows上开发的人都应该学习这种语言……它可以为您节省大量的时间,只是自动化延迟的Windows任务…
我在Windows上遇到的最有用的工具之一就是Texter
此实用程序是用AutoHotKey编写的,可以让我不必输入任何东西,而不必输入任何东西。对于编码人员或任何填写表格或票据的人来说,这是一个不可或缺的工具。
为了您的具体描述,PowerShell听起来像是一个很好的方式去…但是我将在WSH(或Rhino /等下的JavaScript)下为JScript做一个强有力的例子。 听起来像你喜欢CYGWIN,但Powershell目前不支持其他平台(我认为太多原生的东西 – 这是一个单独的讨论国际海事组织,但谷歌应该回答它)。
我几乎在这里的情况: http : //mikesharp.wordpress.com/2011/04/03/jquery-for-administrators/
一些亮点:
JScript不能直接访问.NET框架 – 尽管在纯.NET中有一些第三方JavaScript引擎可以解释它,并且可以像Jurassic和IronJS一样共享对象。 还包括JavaScriptDotNet(围绕Chrome / V8)的包装。 在WSH下,Powershell可能会比JScript更快,但其他第三方解释器可能不会这么说。
只是请不要去与VBScript(缺乏尝试/赶上,没有真正的面向对象程序,专有,不赞成等)。
如果你像我一样想要显示漂亮的进度条或启动画面,而你的脚本是魔术(而不是黑/灰色的命令提示窗口),使用AutoHotkey。 显示进度条是使用JScript / VBScript(WSH)和/或我发现的PowerShell的PITA。 在AHK中,它就像下面这样简单:
Progress, b2 m, ACME App, Doing some magic...
您也可以在任何窗口中与几乎任何控件进行交互,并自动化不应该被自动化的应用程序。