【问题标题】:How do I launch a program from command line without opening a new cmd window?如何在不打开新的 cmd 窗口的情况下从命令行启动程序?
【发布时间】:2012-08-14 03:45:33
【问题描述】:

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

START "filepath"

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

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

【问题讨论】:

  • 你想从什么样的外部文件以编程方式执行它?
  • 我想使用 CMD 执行一个 *.exe 文件......我在下面粘贴的命令打开了该文件,但也打开了一个新的 cmd 窗口......你有正确的脚本这个?
  • 约翰·瓦茨给你答案

标签: windows command-line cmd


【解决方案1】:

使用 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 启动它

【讨论】:

    【解决方案2】:

    20190907

    操作系统:Win 10

    我正在用 c++ 制作一个 exe,出于某种原因,使用 START 会使我的程序失败。

    所以,只需使用引号:

    "c:\folder\program.exe"

    【讨论】:

      【解决方案3】:

      在 Windows 7+ 中,第一个引号将是打开程序的 cmd 窗口的标题:

      start "title" "C:\path\program.exe"
      

      像上面那样格式化你的命令会暂时打开一个cmd 窗口,它一出现就消失,所以你真的永远看不到它。它还允许您打开多个程序,而无需等待第一个程序先关闭。

      【讨论】:

      • 救了我的命,需要使用start "" "C:\path\program.exe"
      • @cprcrack 哇!我很高兴你能幸免于难。小心你让谁进入你的生活!
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我从qkzhu 得到它,但不是使用 MAX,而是将其更改为 MIN,然后窗口将非常快地关闭。

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

        【讨论】:

          【解决方案6】:

          我想如果你关闭一个程序

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

          结束,所以 如果你想启动一个你可以使用的程序

          start "" /normal winamp.exe 
          

          (/norma,/max/min是那个进程值cpu)

          还有

          开始“文件路径”

          如果你想要命令行而不打开新窗口 你这么写

          开始 /b "文件路径"

          /B 是在不创建新窗口的情况下启动应用程序。这 应用程序忽略了 ^C 处理。除非申请 启用^C处理,^Break是唯一的中断方式 应用程序。

          【讨论】:

            【解决方案7】:

            您可以使用call 命令...

            输入:call /?

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

            例如call "Example File/Input File/My Program.bat" [这也可以调用具有.exe.cmd.txt等的文件.

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

            并非所有计算机都能够运行此命令,但如果它确实有效,那么它非常有用,而且您不必打开一个全新的窗口...

            【讨论】:

              【解决方案8】:

              只需删除双引号,这适用于 Windows 7:

              start C:\ProgramFiles\folderName\app.exe
              

              如果你想最大化窗口,试试这个:

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


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

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

              【讨论】:

              • 如果路径中有空间怎么办。
              • 用空格为那些文件夹名加上引号。例如:start C:\"Program Files"\"my application"\app.exe
              【解决方案9】:

              如果你按照你说的通过 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 的命令。

              【讨论】:

                【解决方案10】:

                添加 /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.
                

                【讨论】:

                • 当父控制台关闭时,以这种方式启动的程序仍会收到^Break。相反,我开始时不使用 /B,然后使用 cmdow "&lt;title&gt;" /HID 隐藏新的控制台窗口
                猜你喜欢
                • 1970-01-01
                • 2011-05-15
                • 1970-01-01
                • 1970-01-01
                • 2011-04-20
                • 1970-01-01
                • 1970-01-01
                • 2013-08-09
                • 1970-01-01
                相关资源
                最近更新 更多