我有一个命令提示符实例正在运行(让我们称之为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 "这是我的自定义要求。
有可能吗?
答案 0 :(得分:0)
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