繁体   English   中英

如何从另一个cmd窗口在现有cmd窗口上运行命令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM