XP上的bat文件中的管道奇怪限制

时间:2013-01-13 16:34:06

标签: batch-file windows-xp dos

我在XP Pro SP3系统上创建的BAT文件每次都能完美运行 安装在另一个XP [也是Pro SP3]系统上,每次都会失败("挂起")。

问题原来是多步管道。 为了隔离它,我一直在简化,直到我到达这个最小[和人工]测试用例

    echo. | date | find "/" | find "/" | find "/"

注意:前两个步骤不会缩短为date /t,因为某些用户的系统是XP之前的[因此缺少命令扩展]。另外:仔细测试表明date正在执行MS-DOS内部DATE命令,而find正在执行vanilla" FIND.EXE,2004年8月4日,9216"在发现  " C:\窗口\ system32 \" [并且与" C:\ i386 \"]中的安全副本相同。

在失败的系统上,每个带有4个或更多个命令的命令在第五步中都会挂起,即使这样 - 程序很简单,它们处理的文本量也很小。

昨天我在用户系统上做了一些进一步的测试,发现了一个我不知道的微妙之处。我在命令提示符下输入了简化命令[上面]。它按预期失败["挂"]。然而,当我重新启动并在做任何事情之前再次尝试[这种情况在用户的正常操作中永远不会发生]时,我感到震惊:它起作用了[即,MS-DOS DATE命令的输出出现了如预期的那样]。它再次起作用。然后在第三次尝试时,故障模式重新出现,之后保持一致。
我确认files=40在两个系统上都有效,并放弃了。我仍然很好奇,但我不能花很多时间在一个小项目上为 无偿 客户分析一个我很容易解决的问题变通。

感谢大家的快速和有用的回复。

在原始系统上,无论调用哪些程序以及它们正在处理多少文本[原因],具有4个或更多| s的命令都能正常工作。

一旦确定了限制,就会有许多琐碎的解决方法,所以我的问题只是好奇心问题:有人可以提出限制的来源以及是否有[在XP中]设置会提高/消除它?

注意:两个系统上都不存在HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Command Processor \ AutoRun和HKEY_CURRENT_USER \ Software \ Microsoft \ Command Processor \ AutoRun。

另外:我为通过反复编辑原始帖子来回答评论而道歉,但无论我使用哪种浏览器登录,"添加评论"弹出窗口[或者应该是什么]永远不会出现。也许我的理解是在我自己的帖子中添加评论并不需要声望点是错误的。但是,现在我看到"显示#更多评论"也没有工作。

最后:我使用此网站的问题[主要症状是javascript控制台消息"未捕获的ReferenceError:StackExchange未定义"]与此处讨论的相同{{3}大约一年前。

2 个答案:

答案 0 :(得分:1)

使用^来避免特殊字符
例 回声。 ^ |日期^ |找到“/”^ |找到“/”^ |找到“/”

http://www.robvanderwoude.com/escapechars.php

答案 1 :(得分:0)

有时,如果缺少注册表中的某些内容,您必须手动添加它才能使其正常工作。或者,获得一些高级Windows BAT编辑器,这将扩展您的批处理脚本beyound标准Windows命令等的可能性。对于此,它们通常会附加并将批处理文件转换为exe,因为可执行文件是用于扩展功能的引擎。他们中的大多数都是共享软件,但是,请注意他们的规格,在这种情况下,您需要的只是带引擎的简单编辑器,它将批处理文件提取到临时目录并执行它。您可能不需要用于混淆批处理文件的内容。