2010-04-03 51 views
8

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

这将是一个很好的(理想情况下,技术)的理由永远方案DOS批处理语言现代化的Windows系统上的一些不平凡的任务,而不是下载或者PowerShell或ActiveState的Perl的?

更具体地讲,我为这个问题的持续时间以下两个假设:

  • 人足够的技术,能够写一个中等复杂批处理脚本是足够的技术来安装这的脚本解释器。

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

注意

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

  • 如果你不同意我的两个假设中的任何一个,那很好,我可能是错的。但我的问题特别是“假设这两个假设是正确的,那么仍然坚持批处理的原因是什么?”如果它更容易暂停怀疑(如果您不同意我的观点),请添加第三个假设,即该问题仅限于那些已经提出至少一定程度PowerShell或Perl体验的人。

    要重新迭代 - 与进行高级批量编码相比,这并不意味着要学习PSh或ASPerl有多容易。这是一个单独的问题,太过于主观而不适合在这篇文章中讨论。

背景

我用来做一些相当复杂的批处理编程回到了长老天,记住批次,因为我曾遇到的最糟糕的编程语言之一。

这个问题的想法是在看到一堆关于SO的批处理问题之后出现的,并试图从纯粹的好奇心中琢磨出其中一个问题的答案,并在一分钟后放弃痛苦,精神惊叹道:“为什么会有人去通过这种痛苦,而不是在1行Perl中做到这一点?“ :)

我自己的合理的答案

我认为有可能是一个可能的兼容DOS系统,它具有DOS解释,但没有兼容的PowerShell或Perl ...我不知道一个但并非完全不可能。

+1

注意解决方法是在DOS(command.com)和Windows(CMD.EXE)命令行shell是两个非常不同的世界。出于所有实际的目的,这两者仅仅共享一些语法,但没有别的。 'autoexec.bat'也不再存在一段时间了。除非你还碰巧运行DOS或Windows 9x。 – Joey 2010-04-03 08:32:10

+0

@Johannes - 嗯...我仍然可以在我所有的XP安装中看到autoexec.bat,但是我从不需要在那里放置任何东西,所以不知道它是否工作:) – DVK 2010-04-03 12:44:29

+0

这是古代应用程序,它希望它在那里。与config.sys一样。通常他们是空的。 Windows在'autoexec.bat'中设置环境变量并在Windows中设置它们(DOS程序设置定期设置'PATH'或其他变量以使它们可以正常运行)。除此之外,这些文件已经没有用了,这只是一个向后兼容性。 – Joey 2010-04-03 13:12:12

回答

13

通常,理由是,你需要的脚本不具有另一种解释,并在其上不允许安装一个解释器的机器上运行。很多公司的生产服务器就是一个很好的例子 - 你希望它们拥有尽可能少的开发向量,这意味着没有任何脚本语言不适用于应用程序功能。

当你说批处理语言是一种糟糕的语言时 - 他们沉迷于构建PowerShell的时间和金钱是有原因的 - 但它也是跨越多种版本的唯一通用语言的Windows。

+2

嗯......猜猜看我非常习惯于以同样的方式去“生产”和“Windows”,而我的生活就像生产一样存在于Unix/Linux世界,甚至都没有想到这一点。 +1 – DVK 2010-04-03 00:31:35

+4

令人震惊的是,实际上有些公司使用Windows作为服务器平台。有时它甚至有效。 – 2010-04-03 00:34:24

+0

哎呀,我们公司呢。我只是有幸(我认为)幸运在工作中从不触及警队的那一面。离我最近的一位NETWARE管理员大学时代:) – DVK 2010-04-03 00:37:02

9

因为我在一家银行在默认浏览器是IE6在Windows XP上工作,我不知道如果我将能够在用户的电脑上安装PowerShell和我有一个批处理文件,他们可以用它来快速,轻松地:

sqlcmd with some pre-import SQL 
bcp 
sqlcmd with some post-import SQL 

随着整批需要是RUNAS/NETONLY因为工作站不参与该SQL Server是在/信任域。

我不能说我抱怨什么的......

而且我不认为他们是不平凡的,因为有时他们采取的参数,他们需要一些非常疯狂逃逸引用。

5

我有一个大型公用事业公司的合同,绝对不允许未经批准的程序在他们的电脑上。对连接在控制计算机和设备之间的最内层网络的计算机来说,这是可以预料的,但是这个禁令也适用于通用和管理网络。

经批准的操作系统是Windows XP SP3与IE6。在技​​术支持得到祝福之前不允许升级。看起来,这似乎可能还有几年。

因此,批处理文件中提供的只是一般的脚本工具。一些开发者机器可以访问C++编译器,但是直到(可能的多年)验证工作结束之前,所产生的程序才被允许进行内部分发。

+3

因此,它们允许未经验证的批处理脚本,但未验证具有相同功能的C++代码?伤心但不奇怪:) – DVK 2010-04-03 00:41:41

+1

嘘!如果他们为*未批准的批处理文件添加了禁止*,他们会意识到这些文件,我一点也不会感到惊讶。 – wallyk 2010-04-04 20:59:14

+0

你让它听起来像是一件坏事?下一次你的电力关闭一天,因为有些雅虎在电力公司的网络上运行了未经测试的蹩脚代码,我相信你会对他们更糟,而不仅仅是强迫他们的代码从那时起通过代码审查... – DVK 2010-04-05 11:02:44

2

你也可以选择使用VBScript或JScript,而不是Perl和你就不需要担心安装任何额外的软件。

+0

用JScript完成。 – Axeman 2010-04-03 04:11:23

+3

但是,可以使用组策略禁用Windows脚本宿主。 – Joey 2010-04-03 08:26:31

0

各种原因

  1. 其公司的政策,无论是出于安全或管理给予其他不合逻辑的理由,你严格 使用DOS。
  2. 您必须支持一些已经编写的旧版DOS 脚本。
  3. 你还是在公司 的管理员只知道DOS和有没有能力 学习其他语言。
  4. 您编码已经写入
  5. 较大 DOS程序办事“更难”的方式的一部分,让你看起来很酷 。
  6. 你有很多时间在您的手中 制定一些 事情是很难做到 轻松地与DOS
+3

我严重怀疑DOS是目前任何地方的问题。我们已经过去十多年了,现在已经不再存在于64位Windows上了。 – Joey 2010-04-03 08:27:27

相关问题