升级Windows的DOS批处理文件
最近有人对在Windows机器上编程自动化DOS批处理样式的任务有任何要求吗?
我有一些自动化的方法,如果有更好的方法来自动化执行这些任务,我宁愿不坐下来在记事本中编写一堆.BAT文件:主要是在某些日期和时间条件下移动文件,以及在移动文件之前和之后触发Windows应用程序。
我正在考虑使用正确的参数语法检查将所有DOS命令"可用"到编辑器的IDE。那里是否有类似的东西,还是我应该使用.BAT文件以外的其他文件来解决此问题?
解决方案
尝试使用Python。
Windows 98SE及更高版本具有内置的Windows脚本宿主,可让我们使用VBScript自动执行任务(例如,参见http://www.windowsdevcenter.com/pub/a/oreilly/windows/news/vbscriptpr_0201.html)。
对于除BAT文件之外的简单Windows自动化,可能值得一看。如果我们想从哪里开始,那么VBScript + Windows Task Scheduler将是我首先开始的地方。使用VBS复制文件可以很简单:
Dim objFSO Set objFSO = CreateObject ("Scripting.FileSystemObject") If objFSO.FileExists("C:\source\your_file.txt") Then objFSO.CopyFile "C:\source\your_file.txt", "C:\destination\your_file.txt" EndIf
不幸的是,vbscript / WSH实际上是Microsoft希望我们使用的工具,我已经写了其中一些,这并不令人愉快-
我完全同意Mikael,如果我们知道将在哪些系统上运行脚本,并且可以在脚本上安装解释器,则可以使用Python或者Ruby之类的脚本语言
当然,这取决于我们要弄乱OS或者Active Directory设置,使用WSH时需要采取的自动化类型,但对于平均文件整理,请使用Python或者Ruby
我建议使用Python而不是Ruby作为Windows脚本语言。 Python对Windows的支持比Ruby更成熟。
绝对是PowerShell。这是Microsoft的新外壳,具有许多有趣的可能性和出色的可扩展性。
我个人使用Python或者PowerShell
完成这类任务。
这里有一个用于Powershell的IDE:
PowerGUI
尽管这并不是我们要找的东西,但我还是选择Perl。缺少GUI,Perl将允许我们快速完成任务,并且它的"胶水"功能对将来可能会有的任务很有帮助。另外,如果有一天我们必须在另一台OS(不是Windows)上执行类似的操作,则PowerShell可能不可用,并且我们对Perl的了解会派上用场。
除了Windows下Perl最亲密的兄弟,肯定是PowerShell。
我之所以使用AutoIt,是因为默认情况下并非在所有机器上都可以使用PowerShell。 AutoIt提供了一种简单的语言,其中包含许多可以重复使用的默认代码。 AutoIt可以编译为.exe。
我不确定"在特定条件下移动文件"是什么,但是我曾经写过Robocopy Controller脚本(使用AutoIt),通过它我们可以设置一个复制脚本,并将其填充到Robocopy.exe中("稳健文件复制"副本该程序可以从Microsoft下载,并且默认情况下包含在Windows Vista中以替换xcopy)。也许我的这个免费脚本可以提供帮助。