![](/img/trans.png)
[英]How can I use cmd to produce a new cmd window with certain commands already having been ran inside it?
[英]How can I run commands on existing cmd window from another cmd window?
我正在运行一个命令提示符实例(我们称其为A)。 加载需要10分钟的时间(加载包括初始化,运行一些必备命令等)。 我还有一个命令提示符实例正在运行(将其称为B)。 B只是简单的命令提示符。
现在,我想从B实例在A实例上运行命令。 诸如此类的东西
cmd B:> call A.exe "dosomething"
现在在这里,我希望在cmd实例上运行“操作”。
我尝试了wmic 。
C:\Users\dbe1>wmic process where 'caption like "%cmd.exe"' get name, processid
Name ProcessId
cmd.exe 2628
cmd.exe 17620
我有了进程ID。现在我可以调用对此进程ID进行处理,创建等操作。
wmic process where processid="18172" call terminate
由于Windows可以理解终止方法,因此效果很好。我想在此调用“ dosomething ”,这是我的自定义要求。
可能吗?
阅读Win32_Process方法 。
Win32_Process
类公开以下方法:
AttachDebugger
方法:启动该进程的当前注册调试器; Create
方法:创建一个新的过程; GetAvailableVirtualSize
方法:检索进程可用的可用虚拟地址空间的当前大小(以字节为单位); GetOwner
方法:检索运行进程的用户名和域名; GetOwnerSid
方法:检索进程所有者的安全标识符(SID); SetPriority
方法:尝试更改流程的执行优先级; Terminate
方法:终止进程及其所有线程。 您必须能够在A中运行某些东西,但是可以执行该操作,但是您可以做到这一点:在cmd脚本A中运行cmd.exe A的A.cmd中,添加以下内容:
waitfor dosomething
然后在cmd.exe B中,键入以下内容:
waitfor /SI dosomething
A.cmd(以及当时执行waitfor dosomething
dosomething的任何其他实例或运行cmd脚本)将执行脚本的下一行:这可以是硬编码到A.cmd中的内容,也可以执行以下操作:
B.cmd:
echo @echo Hello World > dosomething.cmd
waitfor /SI dosomething
A.cmd:
waitfor dosomething
if EXIST dosomething.cmd call dosomething.cmd
这样的一个缺点是每个单独的cmd.exe都不是多线程的,但是您可以通过运行多个实例(即,使用多进程而不是多线程)来克服它。 您还必须将每个实例放入其自己的文件夹中,以使其具有自己的dosomething.cmd副本来进行操作。
B.cmd:
echo @echo Hello A instance 1 > \A1\dosomething.cmd
echo @echo Hello A instance 2 > \A2\dosomething.cmd
REM both instances will be signaled by the following line
waitfor /SI dosomething
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.