Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 在Windows中使用dos批处理程序的原因是什么?_Perl_Powershell_Scripting_Batch File_Dos - Fatal编程技术网

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

Perl 在Windows中使用dos批处理程序的原因是什么?,perl,powershell,scripting,batch-file,dos,Perl,Powershell,Scripting,Batch File,Dos,问题 与下载PowerShell或ActiveState Perl相比,在现代Windows系统上用dos批处理语言编写一些非琐碎任务的好理由(理想情况下是技术原因)是什么 更具体地说,我对本问题的持续时间做出以下两个假设: 任何能够编写中等复杂度的批处理脚本的技术人员都可以安装任何一个脚本解释器 对于基本的批量替换任务来说,这两种方法都没有足够的学习曲线,这条曲线将超过批量执行任何远程非琐碎任务的痛苦 注释 “您需要autoexec.bat的批处理程序”不是有效的原因。您的autoe

问题

与下载PowerShell或ActiveState Perl相比,在现代Windows系统上用dos批处理语言编写一些非琐碎任务的好理由(理想情况下是技术原因)是什么

更具体地说,我对本问题的持续时间做出以下两个假设:

  • 任何能够编写中等复杂度的批处理脚本的技术人员都可以安装任何一个脚本解释器

  • 对于基本的批量替换任务来说,这两种方法都没有足够的学习曲线,这条曲线将超过批量执行任何远程非琐碎任务的痛苦

注释

  • “您需要autoexec.bat的批处理程序”不是有效的原因。您的autoexec.bat可能只包括调用非批处理脚本

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

    重新迭代-这并不是一个主观问题,即与高级批处理编码相比,学习PSh或ASPerl有多容易。这是一个独立的问题,太主观了,在这篇文章中不值得费心

背景

我以前做过一些相当复杂的批处理编程,记得批处理是我遇到过的最糟糕的编程语言之一

这个问题的想法是在看到一大堆批量问题之后产生的,出于纯粹的好奇,试图摸索其中一个问题的答案,并在一分钟后痛苦地放弃,心里感叹道:“为什么有人会经历这种痛苦,而不是在一行Perl中这样做?”:)

我自己的合理答案


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

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

sqlcmd with some pre-import SQL
bcp
sqlcmd with some post-import SQL
因为工作站不参与SQL Server所在的域/信任域,所以整个批处理需要以/NET方式运行

不是我在抱怨什么的


我想说,它们非常重要,因为有时它们需要参数,并且需要一些非常疯狂的转义引用。

通常,基本原理是您需要脚本在没有其他解释器且不允许安装解释器的机器上运行。许多公司的生产服务器就是一个很好的例子——您希望它们具有尽可能少的利用向量,这意味着不需要应用程序功能所不需要的脚本语言


当你说批处理语言是一种糟糕的语言时,你是对的——这是他们花费时间和金钱建造PowerShell的原因之一——但它也是在无数版本的Windows中唯一可以依赖的通用语言。

我在一家大型公用事业公司有一份合同,绝对不允许未经批准的应用程序他们计算机上的程序。这一禁令适用于连接控制计算机和设备的最内部网络的计算机,但该禁令也适用于通用和管理网络

经批准的操作系统是带有IE6的Windows XP SP3。在技术支持允许之前,不允许升级。这似乎还需要几年的时间


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

您也可以选择使用vbscript或jscript,而不是perl,您不必担心安装任何其他软件。

各种原因

  • 其公司政策,无论是出于安全原因还是管理层给出的其他不合逻辑的原因,您必须严格遵守 使用DOS
  • 您必须支持一些遗留DOS 脚本已经编写好了
  • 你还是公司的管理人员 只知道DOS,没有能力 学习其他语言
  • 您正在为一个更大的 DOS程序已经编写好了
  • 用“更难”的方式做事会让你看起来更漂亮 酷
  • 你有很多时间 为某些人设计变通办法 难做的事 使用DOS很容易

  • 隐马尔可夫模型。。。我想我不习惯把“生产”和“Windows”放在同一句话里,我的一生都存在于Unix/Linux世界中,就生产而言,我甚至没有想到这一点+1令人震惊的是,事实上有一些公司使用Windows作为服务器平台。有时它甚至能起作用。见鬼,我们公司能。我有幸(我想)从未接触过原力的那一面。最接近我的是大学时代的一名NETWARE管理员:)老实说,Windows作为一个服务器平台实际上工作得很好。它的坏名声(至少在现在)与其说是操作系统的错,不如说是通常维护它的人的错。UNIX管理员往往来自一个混乱的命令行世界;Windows管理员通常来自桌面支持,对任何非点击式操作都有困难。虽然DOS自古以来就“普遍”可用,但直到现在,