与 cmd 同时启动程序的方法

与 cmd 同时启动程序的方法

我有点为难:当我想同时启动一个程序和另一个程序时,我通常的做法是制作一个如下的批处理文件:

@ echo off
start exe1.exe
start exe2.exe
exit

我编译了批处理文件,然后将原始程序重命名为,exe1.exe并将(编译的)批处理文件重命名为原始程序的名称(以保持快捷方式正常工作)。不幸的是,我现在需要同时启动一个程序和 cmd。修改 cmd 本身似乎是不可能的,我不想陷入编写多线程程序来监视当前正在运行的进程的困境。有人有什么建议吗?我本来想使用任务调度程序,但我不知道该怎么用它……谢谢!我使用的是 Win 7,我真的不想在这里安装比我需要的更多的第三方软件……

注意:这不能只是一个启动 cmd 然后启动另一个程序的程序。每次打开 cmd 时,这个程序也需要打开。即使进入C:\Windows\System32并手动运行它也会导致我的其他程序运行。

答案1

来自 CMD.EXE 帮助:

CMD [/A | /U] [/Q] [/D] [/E:ON | /E:OFF] [/F:ON | /F:OFF] [/V:ON | /V:OFF]
    [[/S] [/C | /K] string]

...
/D      Disable execution of AutoRun commands from registry (see below)
...

If /D was NOT specified on the command line, then when CMD.EXE starts, it
looks for the following REG_SZ/REG_EXPAND_SZ registry variables, and if
either or both are present, they are executed first.

    HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun

        and/or

    HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun

因此您应该能够使用命令创建注册表项来启动您的程序。

答案2

是的,篡改%windir%\system32\cmd.exe很危险。您愿意修改用于运行的快捷方式cmd吗?

如果你输入cmd /?,你将收到一条使用信息,其中包括:

命令 [其他选择…] [[/S] [/C | /K]字符串]

/C 执行字符串指定的命令然后终止
/K 执行字符串指定的命令,但保留
/S 修改 /C 或 /K 之后的字符串处理(见下文)

(下面进一步讨论如何/S 修改命令字符串中引号的解释)。

因此,如果你创建一个快捷方式,其目标框显示类似

%windir%\system32\cmd.exe /k "%ProgramFiles%\Windows NT\Accessories\wordpad.exe"

然后,每次调用该快捷方式时,它都会启动命令提示符,并且将cmd启动写字板进程(然后发出提示,并像往常一样从终端读取命令)。正如您的问题中所述,您可能需要start在命令字符串后包含cmd.exe /k

答案3

请尝试使用任务计划程序来实现此目的。步骤如下。

打开任务计划程序 >“操作”选项卡 >“创建任务”>“命名任务”>“转到触发器”选项卡 > 单击“新建”> 从“日志”下拉菜单中选择“在事件时”> 打开 cmd 时输入其来源和事件 ID >“转到操作”选项卡 > 输入要启动的其他程序的路径。

希望这可以帮助。

答案4

我可能不明白这个问题,但我只是将其作为标准批处理文件(未编译)发送,它就起作用了。

@ echo off start exe1.exe start cmd exit

它与我的测试应用程序同时打开了一个新的 cmd 窗口。(我使用了与 exe1.exe 不同的东西)。

cmd shell 可以打开一个新的 cmd shell。

相关内容