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

时间:2015-07-23 07:47:18

标签: windows command-line cmd command-prompt wmic

我有一个命令提示符实例正在运行(让我们称之为A)。 A需要10分钟的时间来加载(加载包括初始化,运行一些必要的命令等)。 我还有一个命令提示符实例正在运行(让我们称之为B)。 B只是简单的命令提示符。

现在我想在B实例的A实例上运行命令。 就像是, e.g。

cmd B:> call A.exe "dosomething"

现在我想要" 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。现在我可以调用treminate,在此进程ID上创建等。

wmic process where processid="18172" call terminate

它工作得很好,因为windows理解终止方法。我想打电话给" dosomething "这是我的自定义要求。

有可能吗?

2 个答案:

答案 0 :(得分:0)

阅读Win32_Process Methods

Win32_Process类公开以下方法:

  • AttachDebugger方法:启动当前注册的进程调试器;
  • Create方法:创建新流程;
  • GetAvailableVirtualSize方法:检索进程可用的空闲虚拟地址空间的当前大小(以字节为单位);
  • GetOwner方法:检索运行进程的用户名和域名;
  • GetOwnerSid方法:检索进程所有者的安全标识符(SID);
  • SetPriority方法:尝试更改进程的执行优先级;
  • Terminate方法:终止进程及其所有线程。

答案 1 :(得分:0)

你必须在A中运行能够被告知该做什么的东西,但是你可以这样做:在cmd脚本中,在cmd.exe A中运行的A.cmd,添加以下内容:

waitfor dosomething

然后在cmd.exe B中键入以下内容:

waitfor /SI dosomething

A.cmd(以及当时正在执行waitfor 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