当我打开cmd.exe并input第一行,然后按ENTER,它工作正常。 当我input另一行并按下ENTER时,它立即closures。
我可以把('a')改成('asdfgh')然后是同样的问题。 或%q到%f同样的问题。
不同的是/ f,由于某些原因FOR / F('……')导致cmd.execlosures。
这发生在我的一个系统上,而不是另一个
C:\>for %q in ('a') do echo %q <ENTER> C:\>echo 'a' 'a' C:\>for /f %q in ('a') do echo %q <ENTER>
这家伙似乎成功解决了一个非常类似的问题:
for / f立即关闭cmd窗口
在这种情况下,问题变成与COMSPEC
环境变量有关,它看起来是最初错误地设置的。 这家伙申请从Windows帐户注销并返回。
添加一个paranthesis“(”,像这样:
for %q in ('a') do (
它会提示你一个“更多?” 在下面的行中,直到你决定用“)”关闭你的块
看“FOR”('FOR /?')的帮助,你可以看到'/ F'选项是用于解析文件输入的,具有以下选项:
FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %variable IN ("string") DO command [command-parameters] FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
请注意,最后一项…单引号的值被视为要运行的命令,该命令的输出是“FOR”正在解析的内容。
也许你在一台机器上有一个“a”命令/可执行文件,但是在另一台机器上却没有?
如果您特别需要“/ F”提供的行为,则只应使用“/ F”标志。