如何在命令行中启动程序而不打开新的cmd窗口?

27

我正试图使用以下命令从 cmd 中以编程方式执行外部文件:

START "filepath"

其中"filepath"是我的文件路径,它可以很好地打开,但它也会打开一个新的命令提示符窗口。

那么,打开外部程序而不打开新窗口的正确命令是什么?


你想从哪种外部文件中编程执行它? - Tony Hopkinson
我想使用CMD执行一个*.exe文件...我下面粘贴的命令可以打开该文件,但同时也会打开一个新的cmd窗口...你有适合这个需求的正确脚本吗? - Andrei20193
John Watts 给了你答案。 - The Disintegrator
10个回答

29
在Windows 7及以上版本中,第一对引号将作为打开程序时cmd窗口的标题:
start "title" "C:\path\program.exe"

如果按照上述方式格式化您的命令,将会暂时打开一个cmd窗口,该窗口打开和关闭的速度非常快,以至于您几乎看不到它。此外,这也允许您在不必等待第一个程序关闭的情况下打开多个程序。


7
救了我的命,需要使用start "" "C:\path\program.exe" - cprcrack
2
@cprcrack 哇!我很高兴你的生命得以幸存。小心你让谁进入你的生活! - Andrew

11

根据"start"命令的命令行帮助文档,需要添加 /B 参数:

C:\>start /?
Starts a separate window to run a specified program or command.

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
  [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
  [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
  [command/program] [parameters]

"title"     Title to display in window title bar.
path        Starting directory.
B           Start application without creating a new window. The
            application has ^C handling ignored. Unless the application
            enables ^C processing, ^Break is the only way to interrupt
            the application.

2
以这种方式启动的程序在父控制台关闭时仍会收到 ^Break。相反,我会先不使用 /B 启动,然后使用 cmdow "<title>" /HID 隐藏新的控制台窗口。 - basin

6

我认为如果你关闭了一个程序

taskkill /f /im "winamp.exe" 
//....(winamp.exe is example)...

结束,因此如果您想启动一个可以使用的程序,请执行。
start "" /normal winamp.exe 

(/norma, /max/min是处理器的过程值)

另外

如果您想要命令行而不打开新窗口,可以编写如下内容

start "filepath"enter image description here

使用以下代码可以在不创建新窗口的情况下启动应用程序:

start /b "filepath"enter image description here

/B是启动应用程序而不创建新窗口。该应用程序忽略^C处理。除非应用程序启用^C处理,否则^Break是中断应用程序的唯一方法。


4

只需删除双引号,这在Windows 7中有效:

start C:\ProgramFiles\folderName\app.exe

如果您想最大化窗口,请尝试以下方法:

start /MAX C:\ProgramFiles\folderName\app.exe


您的命令START "filepath"将启动一个命令提示符并更改命令提示符标题为filepath

尝试在Windows命令提示符中运行start /?,您将获得更多信息。


如果路径中有空格怎么办? - Saif
1
在具有空格的文件夹名称中添加引号。例如:start C:\"Program Files"\"my application"\app.exe - Frank

0
如果您正在使用CMD进行操作,那么您可以像这样输入命令:
path\to\your.exe 

这将在同一窗口中打开它。例如,在C++中:

system("path\\to\\your.exe"); // Double backslash for escaping

将在当前CMD窗口中打开your.exe。同样,要启动新窗口,只需执行以下操作:

system("start path\\to\\your.exe");

如果您选择第一种选项,除非您希望在屏幕上仍然显示打开your.exe命令,否则您必须清除屏幕。

0

您可以使用call命令...

类型:call /?

用法:call [drive:][path]filename [batch-parameters]

例如:call "Example File/Input File/My Program.bat" [这也适用于调用具有.exe.cmd.txt等文件。

注意:此命令并非总是有效!!!

并非所有计算机都能运行此命令,但如果它确实有效,则非常有用,您就不必打开全新的窗口了...


0

20190907

操作系统:Win 10

我正在用C++编写一个exe程序,但使用START命令会导致程序失败。

所以,只需使用引号:

"c:\folder\program.exe"


0

使用explorer.exe启动文件/可执行文件更容易、更安全,它还会使用关联的程序打开文件并直接运行可执行文件,如果您执行以下操作:

start "" "%windir%\explorer.exe" "C:\Path\To\some.pdf"

如果 *.PDF 文件没有与任何程序关联,那么这将类似于双击并触发“使用程序打开”对话框。
start "" "%windir%\explorer.exe" "%windir%\system32\calc.exe"

会打开计算器。

start "" "%windir%\explorer.exe" "C:\pagefile.sys"

会弹出警告,如:您正在尝试打开系统文件(*.sys)...请选择一个程序...

重要提示

explorer.exe始终需要可执行文件/文件的完整路径,而不是相对路径。 如果您想使用相对路径,请使用

start "" "%windir%\explorer.exe" "relative\file.pdf","C:\dir\"

安全相关

使用start "" "some\file.dat"将尝试将文件作为二进制文件执行并启动它,如果可能的话。这可能会导致安全相关问题。 您可以通过创建cmd.exe的副本并将其命名为dummy.dat,然后使用start dummy.dat来启动它进行测试。


0

我从qkzhu那里得到了可行的解决方案,但是将MAX更改为MIN,窗口将会非常快速地关闭。

@echo off
cd "C:\Program Files (x86)\MySQL\MySQL Server 5.6\bin"
:: Title not needed:
start /MIN  mysqld.exe
exit

-1

1-打开文件资源管理器中包含应用程序的文件夹。 2-按住SHIFT键,然后在空白处右键单击。 3-点击“在此处打开命令窗口”。 4-运行您的应用程序(可以输入应用程序名称的前几个字符,然后按向上箭头键或向下箭头键)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接