加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows – 为什么`cmd / k`和`cmd / c`记住已经完成的cmd子进程

发布时间:2020-12-14 04:00:43 所属栏目:Windows 来源:网络整理
导读:这是我执行的命令: cmd /kecho 11echo 22echo 33exit /bcmd /c "doskey /history"echo 1echo 2echo 3exit /b (在Windows 7×64上测试)根据进程资源管理器,cmd / k启动子进程(不是线程).因此,在退出流程之后,我会期望它会从记忆中清除他的东西.这个东西发生
这是我执行的命令:

>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 7×64上测试)根据进程资源管理器,cmd / k启动子进程(不是线程).因此,在退出流程之后,我会期望它会从记忆中清除他的东西.这个东西发生在3/4 / ..产生的cmds,/ f,带有被调用的批处理文件.

解决方法

精简版:

控制台窗口处理命令历史记录

详细:

命令提示符窗口的过程如下:

conhost.exe
— doskey.exe
—— cmd.exe
——— any sub-processes (In your case cmd /k)

截至Microsoft technet:

… If you exit and then restart a program from the same Command Prompt window,the command history from the previous program session is available.

You must run Doskey.exe before you start a program. You cannot use doskey command-line options from a program’s command prompt,even if the program has a shell command.

Doskey在conhost.exe下执行,该进程显示命令提示符窗口.这使它能够监视所有子进程和线程的击键.

从另一个进程中调用cmd时,根CMD进程会处理doskey历史记录

更新:

如MC ND所述,在Windows XP / 2003 / Vista / 2008中,命令历史记录由csrss.exe处理.从Windows 7开始,conhost.exe处理命令历史记录 – 更多here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读