自动化繁琐的手动任务的最佳语言或工具


9

我们所有人都有不时提出的任务,我们认为脚本或自动化比手动完成更好。

显然,某些工具或语言对此比其他工具或语言更胜一筹-例如,没有人(在他们的正确思想中)会交叉引用他们的PM刚刚在汇编器中提供的一堆文本列表。

对于在时间(而不是优雅)至关重要的地方要执行的一般快速而肮脏的工作,您会推荐哪种工具或语言?

背景:我曾经是一名程序员,现在是开发经理PM,希望学习一种有趣的新语言。如果我要学习一些有趣的东西,我希望它会很有用,这种用例很可能会出现。


这是第三方软件winautomation.com
PradeepGB 2010年

3
正如您可以从下面的各种答案中看出的那样,最佳解决方案取决于您要完成的任务以及在何种环境中。
Mark C 2010年

@Mark-我很感激,但是我理想地希望学习一种具有尽可能通用的应用程序的东西。
乔恩·霍普金斯

如果您想做所有事情,我想您至少需要2-3个程序。Linux,Windows,MacOS?代码,文件系统,应用程序宏?
Mark C

Answers:


25

蟒蛇

显而易见的答案(并且有充分的理由)是Python。它是一种可靠的语言,可以跨平台使用。由于它是动态的,因此可以交互地运行它,这非常适合将内容捆绑在一起,并且它具有大量的库选择,因此它是一种通用语言,因此可以应用于大多数问题。


那就是美丽。当使用Python时,将“脚本”和“编程”语言视为完全不同的动物已经过时了。
乔纳斯·普拉卡

伊什(Ish),PowerShell的关键要素之一就是流水线化-不确定python中的可行性(至少通常如此)
Murph 2010年

+ 1,Python在多用途脚本语言方面获得了最佳投票。
乔什(Josh K)2010年

+1同样,python可以在大多数(即使不是全部)平台上运行,并且实际上是更好的“脚本”语言,可用于将某些代码一起破解。
乔治·杜普莱斯


12

Autoit是无与伦比的。这是具有语言的工具。

  • 易于学习的类似于BASIC的语法
  • 模拟按键和鼠标移动
  • 操作窗口和流程
  • 与所有标准Windows控件进行交互
  • 脚本可以编译成独立的可执行文件
  • 创建图形用户界面(GUI)
  • COM支持
  • 常用表达
  • 直接调用外部DLL和Windows API函数
  • 可编写脚本的RunAs函数
  • 详细的帮助文件和大型的基于社区的支持论坛
  • 与Windows 2000 / XP / 2003 / Vista / 2008 / Windows 7/2008 R2兼容
  • Unicode和x64支持
  • 数字签名让您高枕无忧
  • 与Windows Vista的用户帐户控制(UAC)一起使用

8

自动热键

AutoHotkey是Windows的免费开源工具。有了它,您可以:

  1. 非常友好和乐于助人的社区。
  2. 类似于C的语法。
  3. 通过发送击键和鼠标单击来自动化几乎所有东西。
  4. 您可以手动编写鼠标或键盘宏,也可以使用宏记录器。
  5. 为键盘,操纵杆和鼠标创建热键。实际上,任何键,按钮或组合都可以成为热键。
  6. 操作窗口和进程。
  7. 与所有标准Windows控件进行交互。
  8. 在键入缩写词时将其展开。例如,键入“ btw”可以自动生成“顺便说一句”。
  9. 创建自定义数据输入表单,用户界面和菜单栏。有关详细信息,请参见GUI。
  10. 重新映射键盘,游戏杆和鼠标上的键和按钮。
  11. 创建图形用户界面(GUI)。
  12. COM支持。
  13. 常用表达。
  14. 直接调用外部DLL和Windows API函数。
  15. Unicode,x32和x64支持。
  16. 通过WinLIRC客户端脚本响应来自手持式遥控器的信号。
  17. 将任何脚本转换为可以在未安装AutoHotkey的计算机上运行的EXE文件。

http://ahkscript.org/

使用此工具,我已经为多家公司节省了大量资金。


7

佩尔

Perl几乎是我对快速和肮脏的定义。

Perl是无限灵活的,这是一个优点和缺点。它不会强加于您的结构,但是如果您需要它,它就会在那里。它具有所有内容的库。它已经被广泛使用了20年。有大量的代码可以使用。


3
我以为Perl会早得多。我曾经考虑过Perl,因为我已经接触过Perl了,但这只是让我想在每次阅读时都用漂白剂擦洗眼睛。 $=; $ _ = \%!; $ _)= /(。)/; $ == ++ $ |;($。,$ /,$ ,, $ \,$“,$;,$ ^,$#,$〜,$ *,$ :,@%)=($!=〜/(。)(。)。(。)(。)(。)(。)..(。)(。)(。)..(.... ....)/,$“),$ = ++; $。++; $。++; $ _ ++; $ _ ++;($ _,$ \,$,)=($〜 。$“。” $; $ / $%[$?] $ _ $ \ $,$:$%[$?]“,$”&$〜,$#,); $,++; $,+ +; $ ^ | = $“; $_$\$,$/$:$;$~$*$%[$?]$.$~$*${#}$%[$?]$;$\$"$^$~$*.>&$=(这是实际的Perl -诚然,故意坏的Perl -对于那些谁不读它)。
乔恩·霍普金斯

1
@Jon我主要添加了它,因为它不在这里。我同意这会变得很混乱,它不会对您施加任何约束,您必须自己承担。考虑到将其大部分时间用于快速而肮脏的脚本编写,您将获得所见即所得。
史蒂夫·杰克逊

2
是的-不应因为混乱而责怪Perl,这要归因于程序员。此外,如果您的编程语言只允许您编写出色的代码,您将不会因此而受到好评……
Jon Hopkins 2010年

1
我认为Perl是目前存在的最好的脚本语言-它不是自以为是的,它可以让您无需抓紧就可以做您需要做的事情。
保罗·内森

6

电源外壳

它不如Python通用,但如果您存在于Windows环境中,则可能会更有用。

它比Python更像shell /脚本(因为它就是它),但是它可以连接到.NET框架,从而为您提供了非凡的功能。它还得到了社区的广泛支持。

微软一直忙于增加PowerShell将其服务器产品(因此“更有用”),并推出远程处理,使您可以运行脚本从控制台这里


5
可以不加评论地投票否决的耀眼火花能否自我解释?谢谢。
Murph 2010年

5

现代的Unix外壳。例如bash。


当然,假设您在本机支持的环境中运行(或者您将powershell视为等同于现代的unix shell(-:)
Murph 2010年

3

elisp,如果您已经看过大量任务,那么它将通过其基础平台Emacs来完成任务。Emacs可以避免使用完整的窗口管理器,IDE,Office,浏览器,电子邮件客户端,聊天客户端,shell,文件系统资源管理器等所有功能。其中大部分是通过elisp程序完成的。


1

对于某些任务,动作可能是一个很好的选择。

它有一个排序流程图过程,您可以在其中添加actions以按顺序运行。新的actions可以用Java编写。

免责声明:我尚未使用它。


1

对于复杂的自动化,您可能需要使用Robot Framework。该框架主要针对自动化测试,但也可用于通用自动化。

您可以轻松地用Python编写自己的库,并且有许多预先存在的库(Selenium,AutoIt,telnet,ssh,swing等),这些库可以驱动各种功能,如果您在混合环境。

它是关键字驱动的,因此您可以创建新的关键字,从而抽象出重复的任务,甚至具有正在积极开发的IDE,该IDE允许进行一些简单的重构。


1
  • 我组织中的GUI专家喜欢在Windows中实现自动化的TestComplete。
  • 对于CLI脚本,大约90%的Perl和10%的Bash

我一直在努力将一些Common Lisp例程组合在一起以帮助编写脚本,但是它不像Perl那样容易地完成该任务。


0

对于Windows,我强烈建议使用AutoIt(http://autoitscript.com)。确保从下载部分安装Scite软件包。

http://autoitscript.com/forum是获得帮助和查找要包括在脚本中的UDF函数的重要资源。

AutoIt能够控制应用程序窗口和控件,使您几乎可以自动化。编译可执行文件后,它也不需要依赖项。


0

我遇到了使用多种语言进行不同自动化设置的相同问题。我是印度一家IT服务公司的高级顾问。每次我咨询不同

出于这种目的,我很艰难地向管理层证明了这一点。我什至还和我的朋友们讨论过(作为休闲话题)关于开发一种统一的语言以解决所有自动化需求并且仍然跨平台的问题。如果有一个,那可能

改变脚本世界。据我所知,我们通常使用的映射

语言和使用领域

AutoIT-基于Windows的GUI自动化Bash-基于Unix的自动化主要涉及系统交互Perl-具有较少系统交互的数据处理自动化Expect-基于字符的交互需求。(Perl,Bash无法解决)VBS-基于Windows的脚本

任何自动化总是伴随一个或多个远程调用来进行信息检索或结果发布。这是针对主要操作系统的不同列表。

远程脚本调用(工具)

Windows-> Windows

psexec,Powershell

Windows-> Unix

plink,Quest Plink-> SSH服务器

Unix-> Unix

SSH客户端-> SSH服务器

Unix-> Windows

winexe,wmic-> WMI代理check_nrpe-> NRPE_NT代理

在上面的列表中,您可以轻松地确定功能集中没有一种语言可以替代其他语言。在拥有一个通用的OS以及通用的通信协议和API标准之前,我们必须与之共处。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.