这里是我执行的命令:
>cmd /k >echo 1 1 >echo 2 2 >echo 3 3 >exit /b >cmd /c "doskey /history" echo 1 echo 2 echo 3 exit /b >
(在Windows 7x64testing)根据进程资源pipe理器cmd /k
启动一个subprocess(而不是一个线程)。 所以在退出这个过程之后,我希望能够从记忆中清除他的东西。 这个事情发生在3/4 / ..产生的cmds, for /f
,与称为batch file。
控制台窗口处理命令历史记录
命令提示符窗口的过程如下:
conhost.exe
— doskey.exe
—— cmd.exe
———任何子进程(在你的情况下cmd /k
)
至于微软technet:
…如果从相同的“命令提示符”窗口退出并重新启动程序, 则可以使用之前程序会话中的命令历史记录。
在启动程序之前,您必须运行Doskey.exe。 即使程序有shell命令,也不能在程序的命令提示符下使用doskey命令行选项。
Doskey
在conhost.exe
下执行,显示命令提示符窗口。 这使得它可以监视所有子进程和线程的击键。
当您从另一个进程中调用cmd时, 根CMD进程将处理doskey历史记录
更新:
正如MC ND所评论的,在Windows XP / 2003 / Vista / 2008中,命令历史由csrss.exe
处理。 从Windows 7向上, conhost.exe
处理命令历史 – 更多在这里