Python能很好地替代Windows命令行/批处理脚本吗?

Python能很好地替代Windows命令行/批处理脚本吗?,python,command-line,scripting,Python,Command Line,Scripting,我有一些经验,我不介意,但现在我正在做很多Windows开发,我需要使用 Windows命令行语言。出于某种原因,他说的语言真的让我恼火,所以我考虑学习Python并使用它 Python适合这样的事情吗?移动文件,创建脚本来执行解压备份和恢复SQL数据库等操作。Python非常适合这些任务,我想在Windows批处理文件中开发和调试要容易得多 问题是,我认为,确保所有必须运行这些脚本的计算机都安装了Python是多么容易和轻松。你知道吗?当然,Python对于这些任务来说是一个非常好的选择(我相

我有一些经验,我不介意,但现在我正在做很多Windows开发,我需要使用 Windows命令行语言。出于某种原因,他说的语言真的让我恼火,所以我考虑学习Python并使用它


Python适合这样的事情吗?移动文件,创建脚本来执行解压备份和恢复SQL数据库等操作。

Python非常适合这些任务,我想在Windows批处理文件中开发和调试要容易得多


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

你知道吗?

当然,Python对于这些任务来说是一个非常好的选择(我相信很多人会推荐PowerShell)

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


编辑:关于gnud的担忧:

Python当然非常适合这样做。如果您要沿着这条路走下去,您可能还需要研究哪一个构建系统本身是用Python构建的。最酷的是,构建脚本实际上是成熟的Python脚本本身,因此您可以在构建脚本中执行在Python中可以执行的任何操作。相比之下,它使
make
看起来相当贫血


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

任何东西都可以很好地替代windows中的批处理文件系统。Perl、Python和Powershell都是不错的选择。

@BKB肯定有一个合理的顾虑。如果遇到任何标准库无法解决的问题,请查看以下几个链接:

  • 是一个用于处理低级win32 API(高级文件系统修改、COM接口等)的软件包
  • :他维护一个基于Pywin32的WMI包装程序包,但一定要查看他的页面,了解如何在Python中完成典型Windows任务的详细信息

我最近用了很多。比批处理脚本功能更强大,而且由于它使用Windows脚本,因此无需安装任何东西。

Python与之一起,可以用于Windows自动化。但是,与Winows脚本主机一起使用的VBScript或JScript也可以正常工作,并且不需要额外的安装。

尽管我非常喜欢python,但我认为它不是替换基本windows批处理脚本的好选择

我看不出有人需要导入sys、os或getopt等模块来完成shell的基本功能,比如调用程序、检查环境变量或参数


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

我在Linux/Unix和Windows环境中,用Python、Perl、批处理文件、Bash等编写了大量脚本。我的建议是,如果可能的话,安装Cygwin并使用Bash(从您的描述听起来,安装脚本语言或env不是问题吗?)。由于转换非常简单,因此您会更习惯于这样做


如果这不是一个选项,那么我的看法是。批处理文件非常复杂和有限,但对于“复制一些文件”或“重新启动此服务”这样的简单任务来说非常有意义。Python将更干净、更易于维护,而且功能更强大。然而,缺点是,您最终从Python调用外部应用程序时会使用subprocess、popen或类似程序。否则,您将编写更多代码来完成批处理文件中相对简单的事情,例如复制一个装满文件的文件夹。这在很大程度上取决于您的脚本所做的工作。例如,在Python中,文本/字符串处理将更加干净

最后,它可能不是一个有吸引力的替代品,但是你也可以考虑VBScript作为一种选择。我不喜欢把它作为一种语言来处理它,但是如果可移植性是任何一种关注,那么它就可以通过在任何一个Windows副本中从盒子中获得而获胜。因此,我发现自己编写了脚本THA。相反,在VBScript中,批处理文件很难处理,因为我通常不能依赖Windows上的Python、Perl或Bash。

Summary Windows:无需思考,使用Python。 Unix:脚本用于Bash时,快速或运行它,严重和/或长寿命脚本用于Python

大话 在Windows环境中,Python绝对是最好的选择,因为它很糟糕,而且PowerShell还没有真正解决。此外,Python可以在多个平台上运行,因此这是一个更好的投资。最后,Python有一个庞大的库集,因此您几乎永远不会碰到“god-I-can-do-that”墙。对于cmd和PowerShell来说,情况并非如此

在Linux环境中,这是有点不同的。在纯Bash中,许多单行程序都更短、更快、更高效,而且通常可读性更高。但是如果您知道您的快速脏脚本将保留一段时间,或者需要改进,请使用Python,因为它更易于维护和扩展。如果您不能,您可以使用sti我将从Python脚本调用命令行

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

python -c  "for line in open('/etc/fstab') : print line"
有关用于系统管理任务的Python的更多文献:


接下来,经过一些实验,我发现Python最有用的是任何涉及文本操作的情况(yourStringHere.replace(),regex用于更复杂的内容)或快速测试一些基本概念,这非常适合

对于SQL DB恢复脚本之类的东西,我