Python是否可以替代Windows命令行/批处理脚本?

时间:2008-10-17 20:48:26

标签: python command-line scripting

我有Bash的一些经验,我不介意,但现在我正在做很多Windows开发我需要做基本的东西/使用基本脚本编写 Windows命令行语言。出于某种原因,这种语言真的让我感到恼火,所以我正在考虑学习Python并使用它。

Python适合这样的东西吗?移动文件,创建脚本以执行诸如解压缩备份和恢复SQL数据库等操作

12 个答案:

答案 0 :(得分:20)

Python非常适合这些任务,我认为开发和调试比Windows批处理文件更容易。

问题是,我认为,确保所有运行这些脚本的计算机都安装了Python是多么容易和轻松。

答案 1 :(得分:12)

摘要

Windows :无需考虑,使用Python。 Unix :快速或一次性运行脚本用于Bash,严重和/或长寿命脚本适用于Python。

大话

在Windows环境中,Python绝对是最佳选择,因为cmd很糟糕且PowerShell还没有真正解决。 Python可以在多个平台上运行,因此这是一个更好的投资。最后,Python有一套庞大的库,所以你几乎永远不会碰到“上帝 - 我不能做那个”的墙。对于cmd和PowerShell,情况并非如此。

在Linux环境中,这有点不同。在纯Bash中,许多一个衬垫更短,更快,更高效并且通常更具可读性。但是如果你知道你的快速和肮脏的脚本将会存在一段时间或者需要改进,那就选择Python,因为它更易于维护和扩展you will be able to do most of the task you can do with GNU tools with the standard library。如果你不能,你仍然可以从Python脚本调用命令行。

当然,您可以使用-c选项从shell调用Python:

python -c  "for line in open('/etc/fstab') : print line"

有关Python用于系统管理任务的更多文献:

答案 2 :(得分:8)

当然,python是这些任务的不错选择(我相信很多人会推荐PowerShell)。

从这个角度来看,这是一个很好的介绍:

http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-well-kept-secret/

编辑:关于gnud的关注:http://www.portablepython.com/

答案 3 :(得分:5)

您知道PowerShell吗?

答案 4 :(得分:5)

@BKB肯定有一个有效的担忧。如果遇到标准库无法解决的任何问题,您可以查看以下几个链接:

  • Pywin32是一个用于处理低级别win32 API(高级文件系统修改,COM接口等)的软件包。
  • Tim Golden's Python page:他维护了一个基于Pywin32构建的WMI包装器包,但请务必查看他的"Win32 How Do I"页面,了解如何在Python中完成典型的Windows任务。

答案 5 :(得分:4)

任何东西都可以替代Windows中的批处理文件系统。 Perl,Python,Powershell都是不错的选择。

答案 6 :(得分:2)

Python当然非常适合。如果您正走这条路,您可能还想调查SCons,这是一个使用Python构建的构建系统。很酷的是构建脚本实际上是完整的Python脚本本身,所以你可以在构建脚本中做任何事情,否则你可以在Python中做。相比之下,make显得相当贫乏。

在重新阅读您的问题时,我应该注意到SCons比编写系统维护脚本更适合构建软件项目。但无论如何我会毫不犹豫地向你推荐Python。

答案 7 :(得分:1)

Python和Pywin32一起适用于Windows自动化。但是,与Winows Scripting Host一起使用的VBScript或JScript也可以正常工作,并且无需额外安装。

答案 8 :(得分:1)

作为一个后续工作,经过一些实验,我发现Python最有用的东西是涉及文本操作的任何情况(yourStringHere.replace(),更复杂的东西的正则表达式)或者很快测试一些基本概念,它非常适合。

对于像SQL DB恢复脚本这样的东西,我发现我通常只是求助于批处理文件,因为它通常要么足够短,实际上需要更多的Python代码才能进行适当的系统调用,或者我可以重用其他代码片段。人们将写作时间缩短到足以调整现有代码以满足我的需求。

作为附录,我强烈推荐IPython作为一个很棒的交互式shell,完成选项卡完成和简单的文档字符串访问。

答案 9 :(得分:0)

我最近一直在使用很多Windows Script Files。比批处理脚本更强大,并且由于它使用Windows脚本,因此无需安装。

答案 10 :(得分:0)

我已经在Linux / Unix和Windows环境中,在Python,Perl,批处理文件,Bash等中完成了大量的脚本编写。我的建议是,如果可能,安装Cygwin并使用Bash(它听起来来自您的描述如安装脚本语言或env不是问题?)。你会对此感到更舒服,因为转换很少。

如果这不是一个选项,那么这是我的看法。批处理文件非常复杂且有限,但对于“复制某些文件”或“重新启动此服务”等简单任务非常有用。 Python将更清晰,更易于维护,并且功能更强大。但是,缺点是您要么最终使用子进程,popen或类似方法从Python调用外部应用程序。否则,您最终会编写更多代码来执行批处理文件中相对简单的操作,例如复制完整文件的文件夹。这很大程度上取决于你的脚本在做什么。例如,文本/字符串处理在Python中会更加清晰。

最后,它可能不是一个有吸引力的选择,但您也可以考虑将VBScript作为替代方案。我不喜欢将它作为一种语言用于个人,但如果可移植性是任何一种担忧,那么它可以通过任何Windows副本中的开箱即用而获胜。因此我发现自己编写的脚本在VBScript中作为批处理文件很难处理,因为我通常不能依赖于Python或Perl或Bash在Windows上可用。

答案 11 :(得分:-2)

尽管我喜欢python,但我认为替换基本的Windows批处理脚本不是一个好选择。

我看不到有人必须导入像sys,os或getopt这样的模块来执行你可以用shell做的基本事情,比如调用程序,检查环境变量或参数。

另外,根据我的经验,对于大多数系统管理员而言,goto比函数调用更容易理解。