标题: [求助]每一个FOR循环都会调用一个CMD.exe?
[打印本页]
作者: qinbuer
时间: 2007-9-12 02:44
标题: [求助]每一个FOR循环都会调用一个CMD.exe?
环境:WINDOWS XP SP2
案例1:
@echo off
for /f "delims=" %%i in ('tasklist /nh') do echo %%i
pause
结果发现:两个CMD.EXE进程
案例2:
@echo off
tasklist /nh
pause
结果发现:一个CMD.EXE进程
为什么会出现这样的情况呢?难道每一个FOR循环都需要调用一个CMD.exe,当循环过后调用的进程就会立即退出?
[
Last edited by qinbuer on 2007-9-12 at 02:54 AM ]
作者: ThinKing
时间: 2007-9-12 10:04
这和for没有什么关系,请详细说明你的测试步骤。
我的第一个例子的结果为一个cmd.exe进程。
作者: wudixin96
时间: 2007-9-12 10:50
任务管理器里是只有一个的。
@echo off
for /f "delims=" %%i in ('tasklist /nh') do echo %%i
pause
list出来的列表里有两个cmd
作者: ThinKing
时间: 2007-9-12 11:13
我是这样猜想的:如果for带上/f参数,并且括号里面也是单引号括起来的命令,那么for会启动一个子cmd.exe进程来运行括号里面的命令,因此有了两个cmd.exe进程。
这里只有一个。
@echo off
for /f %%a in ("tasklist /nh") do %%a
pause
作者: qinbuer
时间: 2007-9-13 12:05
我本人没有技术进行再深入的测试,ThinKing兄的回答似乎是最好的解释了。加分表示谢意。
作者: HAT
时间: 2007-9-16 13:11
willsort兄就此做过解释
翻翻以前的帖子应该找的到
for循环启动的那个cmd.exe跟普通的不太一样
作者: titiger
时间: 2007-9-17 09:59
收获了,呵呵