在Windows中使用dos批处理程序的原因是什么?

DVK*_*DVK 8 powershell scripting perl dos batch-file

在现代Windows系统上编写dos批处理语言中的一些非平凡任务而不是下载PowerShell或ActiveState Perl会有什么好(理想的,技术性的)理由?

更具体地说,我在这个问题的持续时间内做了以下两个假设:

  • 任何技术足以编写中等复杂性批处理脚本的人都足够技术来安装任何一个脚本解释器.

  • 对于基本的批量替换任务而言,这两者都没有足够的学习曲线,所述曲线将超过批量执行任何远程非平凡任务的痛苦.

笔记

  • "你需要一个autoexec.bat的批处理程序"不是一个正当的理由.您的autoexec.bat可能只是调用非批处理脚本.

  • 如果你不同意我上面的两个假设中的任何一个,那很好,我可能错了.但我的问题是" 假设这两个假设是正确的,那么仍然坚持批量的原因是什么?" 如果它更容易暂停怀疑(如果你不同意我),请加上第三个假设,即问题仅限于那些已经拥有至少一些PowerShell或Perl经验的人.

    重新迭代 - 与进行高级批量编码相比,这并不是一个主观问题,即学习PSh或ASPerl是多么容易.这是一个单独的问题,太过主观,不能在这篇文章中被打扰.

背景:

我曾经在老年时代做过一些相当复杂的批量编程,并且记得批处理是我遇到过的最糟糕的编程语言之一.

关于这个问题的想法是在看到一堆关于SO的批量问题之后,并试图从纯粹的好奇心中解决其中一个问题并在一分钟后痛苦地放弃,在心理上惊呼"为什么会有人经历这种痛苦而不是在Perl的1行中做到这一点?" :)

我自己看似合理的答案

我假设可能有一个可能与DOS兼容的系统,它有DOS解释器但没有兼容的PowerShell或Perl ......我不知道一个但不完全不可能.

Dan*_*ory 13

通常,理由是您需要脚本在没有其他解释器并且不允许您安装解释器的计算机上运行.许多公司的生产服务器都是一个很好的例子 - 您希望它们尽可能少地使用开发向量,这意味着没有应用程序功能不需要的脚本语言.

当你说批处理语言是一种糟糕的语言时,你是对的 - 这是他们将时间和金钱投入构建PowerShell的原因 - 但它也是你可以在无数版本的Windows中依赖的唯一通用语言.

  • 说实话,Windows实际上作为服务器平台工作得非常好.它得到的糟糕说唱(至少这些日子)​​并不是操作系统的错,而是通常维护操作系统的人.UNIX管理员往往来自一个粗暴的命令行世界; Windows管理员通常来自桌面支持,并且遇到任何非点击操作的问题. (8认同)
  • 令人震惊的是,事实上公司使用Windows作为服务器平台.有时它甚至有效. (4认同)
  • 嗯......我觉得我已经习惯于以同样的态度来看待"producion"和"Windows",在生产过程中我的生活一直存在于Unix/Linux世界中,甚至没有想到这一点.+1 (2认同)
  • 虽然DOS从古至今都是"普遍"可用的,但是如果要将旧代码移植到新代码中,新版本中某些批处理工具的语法更改和遗漏经常会破坏批处理代码.毕竟它不是"普遍的". (2认同)

Cad*_*oux 9

因为我在Windows XP上默认浏览器是IE6的银行工作,我不知道我是否能够在某人的计算机上安装PowerShell,并且我有一个批处理文件,可以快速轻松地使用它们:

sqlcmd with some pre-import SQL
bcp
sqlcmd with some post-import SQL
Run Code Online (Sandbox Code Playgroud)

由于工作站不参与SQL Server所在的域/信任,因此整批需要为RUNAS/NETONLY.

不是我抱怨或任何事情......

而且我会说它们是非平凡的,因为有时它们会采用参数,它们需要一些非常疯狂的逃避引用.


wal*_*lyk 5

我在一家大型公用事业公司有合同,绝对不允许在他们的计算机上使用未经批准的程序.对于连接到控制计算机和设备之间连接的最内层网络的计算机,可以预期这种情况,但禁令也适用于通用和管理网络.

批准的操作系统是带有IE6的Windows XP SP3.在技​​术支持祝福之前,不允许升级.看来,这可能还需要几年时间.

因此,批处理文件是唯一可用的通用脚本工具.某些开发人员机器可以访问C++编译器,但是在(可能的多年)验证工作结束之前,不允许生成的程序进行内部分发.

  • 那么它们允许未经验证的批处理脚本,但不允许未经验证的C++代码具有相同的功能?伤心但不奇怪:) (3认同)