我想知道在 Windows 平台上做一些脚本工作的选项是什么。我需要文件操作、注册表编辑等功能。可以使用脚本工具编辑文件吗?Windows 脚本工具还提供哪些其他功能?可以使用 Windows GUI 完成的所有事情都可以使用脚本语言完成吗?
12 回答
我认为微软的Windows PowerShell是目前这类事情的最爱。
可能值得查看 2.0 版的预发布版本。很多东西都变了:
http://blogs.msdn.com/powershell/archive/2007/11/06/what-s-new-in-ctp-of-powershell-2-0.aspx
批处理文件是最便携的,但是做复杂的事情会变得很困难(非常困难)。
Powershell 非常 - 嗯 - 强大,但目前安装的域仅比那些喜欢使用 powershell 和他们管理的服务器的人多一点。如果您控制正在编写脚本的机器并且可以强制安装 powershell,那么 powershell 就是您要走的路。否则,批处理文件是最好的方法。
Powershell 让您可以做任何可以做的事情,但有些事情会比其他事情更难:)
(说真的,如果你想通过脚本控制 Windows GUI 应用程序,除非应用程序本身支持脚本编写,或者你想开始向对话框控件发布消息并屏幕抓取对话框以检查,否则你会遇到很多痛苦为了成功。)
我会推荐“Take Command”(JPSoft),它更像是“cmd.exe”而不是 PowerShell。我们在 ESSS 使用了多年。
脚本?我记得看到过类似的东西。
Powershell 很好,但它是你必须安装的额外的东西。在几乎所有 Windows 安装中都不是标准的。所以,如果它只是供你自己使用,那么powershell应该没问题。如果您需要脚本在普通用户的计算机上运行,例如,作为您正在生产的软件的一部分,它可能不是最佳选择。
如果您对必须安装的额外内容感到满意,您可能需要查看 cygwin。这使您可以使用完整的 Linux bash 命令行和所有相关工具。
如果您需要默认 Windows 安装中包含的内容。有windows命令行(cmd.exe)。它具有一些功能,但与 Linux 中可用的功能相比非常不足。另一个可能更糟糕的问题是,文档的方式并不多。
您可能还对 VB Script (flame away) 感兴趣。VB 脚本几乎可以在任何最近的标准 Windows 安装上运行,并且比命令行功能强大得多。
我已经安装了 cygwin,所以我可以运行 bash shell 脚本来满足我的自动化需求。此外,当我需要在 Windows 上本地运行更多的东西时,我使用批处理 + jscript 的组合(如果您安装了 Visual Studio.Net,则在 cmdline 上运行,只需调用“cscript XXX.js”)。
脚本是一个爆炸。
我个人喜欢写一些邪恶的小批处理文件。你可以找到一个命令行程序来做任何事情。我更喜欢批处理文件,主要是因为它们可以从一台机器移植到另一台机器,最多带有几个 unix 工具(SSED、GREP、GAWK)的 zip。有一个命令行 REG.Exe 甚至可以进行注册表更改和读取。您可以使用“FOR /f”循环解析命令的输出。
PowerShell 确实有更多... err..电源(我写的第二篇文章,但我无能为力。)
如果您想查看 Windows 自动化,请查看AutoHotKey。
你想自动化什么?这可能有助于我们缩小有用的范围。
- 乔什
编辑:作为记录,我在@jameso 的同时输入了如果有人在工作中没有问我问题,我可能已经在他面前发帖了。不过,我确实对帖子的相似性感到有些颤抖......
Powershell 可以满足您的需求。
文件操作
这篇SO 帖子回答了如何替换文本文件中的字符串。将其粘贴在这里以方便参考:
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
您还可以执行其他操作,例如复制文件和文件夹。您可以在Windows Powershell 文档中找到更多信息
注册表编辑
这可以使用 Powershell 轻松完成。这是来自Microsoft Dev Blogs的示例代码:
Set-ItemProperty -Path HKCU:\Software\hsg -Name newproperty -Value anewvalue
昨天我本可以为你修好这个的;)
Windows shell 脚本的所有工具/语言是什么?
会读得更好
哪些工具和语言可用于 Windows shell 脚本?