问题
在现代Windows系统上编写dos批处理语言中的一些非平凡任务而不是下载PowerShell或ActiveState Perl会有什么好(理想的,技术性的)理由?
更具体地说,我在这个问题的持续时间内做了以下两个假设:
任何能够编写中等复杂性批处理脚本的技术人员都足够安装任何一个脚本解释器。
对于基本的批量替换任务而言,这两者都没有足够的学习曲线表明曲线会超过批量执行任何远程非平凡任务的痛苦。
备注
“您需要autoexec.bat的批处理程序”不是一个正当理由。您的autoexec.bat可能只是调用非批处理脚本。
如果您不同意上述两个假设中的任何一个,那很好,我可能错了。但我的问题是“假设这两个假设是正确的,那么仍然坚持批处理的原因是什么?”如果它更容易暂停怀疑(如果你不同意我),请加上第三个假设,即问题仅限于那些已经拥有至少一些PowerShell或Perl经验的人。
重新迭代 - 与进行高级批量编码相比,这并不是一个主观问题,即学习PSh或ASPerl是多么容易。这是一个单独的问题,太过主观,不能在这篇文章中被打扰。
背景:
我曾经在老年时代做过一些相当复杂的批量编程,并且记得批处理是我遇到过的最糟糕的编程语言之一。
这个问题的想法是在看到一堆关于SO的批量问题之后,并试图从纯粹的好奇心中解决其中一个问题并在一分钟后痛苦地放弃,在心理上惊呼“为什么有人会经历这种痛苦而不是在Perl的一行中做到这一点?“ :)
我自己似是而非的答案
我认为可能有一个可能与DOS兼容的系统,它有DOS解释器,但没有兼容的PowerShell或Perl ......我不知道一个但不完全不可能。
答案 0 :(得分:13)
通常,理由是您需要脚本在没有其他解释器并且不允许您安装解释器的计算机上运行。许多公司的生产服务器都是一个很好的例子 - 您希望它们尽可能少地使用开发向量,这意味着没有应用程序功能不需要的脚本语言。
当你说批处理语言是一种糟糕的语言时,你是对的 - 他们有时间和金钱来构建PowerShell - 但它也是你可以依赖的无数版本的唯一通用语言视窗。
答案 1 :(得分:9)
因为我在Windows XP上默认浏览器是IE6的银行工作,我不知道我是否可以在某人的计算机上安装PowerShell,而且我有一个批处理文件,可以快速轻松地使用它们:
sqlcmd with some pre-import SQL
bcp
sqlcmd with some post-import SQL
整批需要是RUNAS / NETONLY,因为工作站不参与SQL Server所在的域/信任。
不是我抱怨或任何事情......
而且我会说它们是非平凡的,因为有时它们会采用参数,它们需要一些非常疯狂的逃避引用。
答案 2 :(得分:5)
我在一家大型公用事业公司签订合同,绝对不允许在他们的计算机上使用未经批准的程序。对于连接到控制计算机和设备之间连接的最内层网络的计算机,可以预期这种情况,但禁令也适用于通用和管理网络。
批准的操作系统是带有IE6的Windows XP SP3。在技术支持祝福之前,不允许升级。从现在开始,这似乎还有几年。
因此,批处理文件是唯一可用的通用脚本工具。一些开发人员机器可以访问C ++编译器,但是在(可能的多年)验证工作结束之前,不允许生成的程序进行内部分发。
答案 3 :(得分:2)
你也可以选择使用vbscript或jscript而不是perl,你不必担心安装任何其他软件。
答案 4 :(得分:0)
各种原因