当前位置:  开发笔记 > 开发工具 > 正文

批量在for/f命令上过早关闭

如何解决《批量在for/f命令上过早关闭》经验,为你挑选了1个好方法。

我有一个批处理文件(在Windows XP中,激活了命令扩展名),其中包含以下行:

for /f %%s in ('type version.txt') do set VERSION=%%s

在某些计算机上,它运行正常(如此SO问题所示),但在其他计算机上它会杀死cmd(控制台窗口刚刚关闭)

为什么?


注意:计算机似乎有类似的配置:XpSP2,用户具有管理权限,HKEY_CURRENT_USER\Software\Microsoft\Command Processor中没有定义"命令处理器"...



1> VonC..:

我得到了第一个经验答案:

for /f %%s in (version.txt) do ...

在每台计算机上工作得很好.

它似乎for /f适用于文件名,而不是任何dos命令,如'type filename'.

但是,对于我所有客户端的计算机来说都不是这样(在某些情况下,'类型文件名'工作正常)

如果你想要15(简单?)点数;-),你可以回答这个问题:
为什么'for/f'有时不能用于文件名以外的任何其他内容.为什么它只是关闭DOS会话?


编辑:3年后(!),barlop面临类似情况,详细问题" for /f立即关闭cmd提示? ".他的结论是:

COMSPEC在做SET+ 时确实被列出了ENTER.
因此,我打开了环境变量窗口,并且COMSPEC未在用户或系统变量下列出.我将它添加到系统变量,启动命令提示符,它似乎工作正常.

这线程ss64论坛,由提到舍甫琴科中号在回答barlop的问题,包含的细节.

在" for"循环中完成' dir'(或者你要求完成的任何命令)中的shelling需要ComSpec设置才能重新加载cmd窗口.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\ComSpec=
%SystemRoot%\system32\cmd.exe

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有