如何在Windows 8中通过命令提示符打开程序?


17

假设我有一个名为的程序,any_program.exe并且操作系统驱动器是C:。该程序的位置是D:\Any_Folder\any_program.exe

如何在Windows 8中通过命令提示符启动/执行该程序?

我已经尝试了命令行START any_program.exe,但是它显示了一个错误

Windows无法找到“ any_program.exe”。请确保您键入正确的名称,然后再试一次。

顺便说一句,它在Windows 7中运行良好。而且,如果我键入START notepad.exeSTART firefox.exe(Firefox未安装在C:驱动器中),它将在Windows 8中运行。


特别是与Windows 8无关,不是吗?
乔伊

我想是的。在Windows 7中,只有路径可以使用。但是在Windows 8中,程序的路径必须在引号之间(我发现了这些内容),否则它会显示无法定位程序的错误(如果该路径未在PATH环境变量或环境变量中注册)。应用注册表)。
Ahmadul Hoq

2
据我所知,Windows 7的行为方式完全相同。您可能在其中一个位置存放了文件。
鲍勃

Answers:


24

在命令提示符中可以通过三种基本方法来运行“命令”。

  • 内置命令“内部命令”

    这些是cmd本身内置的命令,不需要外部程序调用。它们也不执行任何搜索,并且如果匹配,将始终以最高优先级执行。您可以通过将可执行文件名放在引号中来绕过内置程序:echo调用内置程序,但"echo"将遵循以下cmd规则进行搜索。

  • 直接调用

    这是当您直接指定程序名称(无路径)时。例如,如果在提示符下运行cmdcmd.exe)或ipconfigipconfig.exe),则您将直接调用外部命令。这将执行完全在命令提示符下实现的有限搜索,顺序如下:

    • 当前目录。
    • PATH环境变量中列出的目录。

    (感谢dxiv的评论)

  • 通过start命令

    当您尝试通过start命令执行文件时,命令提示符不会执行任何搜索。相反,它将文件名(和参数)传递给Windows本身(通过ShellExecuteExAPI调用),然后Windows 必须搜索文件的位置。有几个地方是按以下顺序搜索:

    • 当前工作目录
    • Windows目录
    • Windows \ System32目录
    • PATH环境变量中列出的目录
    • 注册表定义的应用程序路径

    请注意,“运行”对话框也使用此搜索方法。


通常,您可以使用cd /d D:\Any_Folder/d表示更改驱动器)导航至文件的位置,然后运行any_program.exe。或者,您可以指定完整路径D:\Any_Folder\any_program.exe

如果您想以开头,则有两种start any_program.exe选择:

  • 您可以将其放在Windows或System32目录中,或者放在PATH环境变量中的任何目录中。
  • 您可以将(D:\Any_Folder)中的目录添加到PATH环境变量中,有关详细信息,请参阅此问题
  • 您可以将其添加到“应用程序路径”注册表项中,就像记事本和Firefox一样。firefox.exe与其他处理目录的选项不同,应用程序路径将文件关键字(例如)与文件的完整路径链接在一起。有关更多信息,请参见此处

3
为了完整起见,应注意的是,在命令提示符处直接运行程序any_program.exe不会搜索App Paths项,而在运行程序时(start any_program.exe例如在默认的Win7安装程序中)会运行该程序,在提示符下输入wordpad会提示not recognized错误,同时start wordpad成功启动了写字板(基于其“应用路径”键)。技术原因是,链接页面引用ShellExecuteEx(start使用),而CreateProcess(直接执行使用)则专门提到未搜索应用路径。
dxiv

@dxiv谢谢。最终通过cmd直接调用搜索cwd和PATH列出的目录。我会尽快修改。
鲍勃

1
谢谢,很快就收到了三年的后期评论;-)有关文档链接是 msdn.microsoft.com/zh-cn/library/windows/desktop/ms682425.aspx,但我没有足够的空间来包含它在之前的评论中。搜索逻辑在lpCommandLine下的#1-6中列出。
dxiv

1
@dxiv感谢您的链接。我也对其进行了编辑,尽管它似乎与我观察到的行为不匹配...(尝试:set path=其次cmd找不到它,但start cmd仍可以在env var之外搜索路径,因此可以工作)。
鲍勃

1
感谢您的仔细检查。确实是这样的情况,默认情况下,cmd直接执行不搜索Windows / system目录,并且我指向CreateProcess文档是错误的。根据technet.microsoft.com/zh-cn/library/…下的“命令搜索序列”部分,cmd似乎具有其自己的逻辑,其历史至少可以追溯到NT次,并且很可能永远存在。
dxiv

7
start D:\Any_Folder\any_program.exe

或者,当路径或文件包含空格时

start "" "D:\Any_Folder\any_program.exe"

start any_program.exe仅适用于位于%PATH%环境变量中或在注册表中通过键HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths或其HKEY_CURRENT_USER类似物注册的程序。


5

您有两种选择:

  1. 将程序添加到%PATH%变量
  2. 在快捷方式中使用引号

详情:

添加any_program.exe到路径:

  1. 转到“控制面板”->“高级系统设置”
    高级系统设置
  2. 转到高级选项卡
    系统设置

  3. 单击“环境变量”,添加any_program.exe所在的文件夹。编辑PATH变量并在最后添加文件夹,并用;
    路径变量

  4. 现在,您可以在运行对话框中使用any_program.exe(尝试注销并重新登录,以确保使用了路径变量更改。)

使用完整路径

any_program.exe您需要使用完整的PATH,而不是在“运行”对话框中使用。因此,请D:\Stuff\App\any_program.exe在“运行”对话框中键入。


这些屏幕截图实在太糟糕了。介意尺寸合理吗?
Journeyman Geek

正在努力...
Nemo

Windows上的路径目录用分号(;)而不是冒号(:)分隔...
Bob

我已经想到了,但是仍然打错了。
Nemo 2012年

屏幕截图显然取自c-sharpcorner.com/UploadFile/6cde20/…。屏幕截图非常糟糕
Journeyman Geek

1
  1. 打开命令提示符
  2. 键入您要运行的程序的名称。如果它在PATH系统变量上,它将被执行。如果没有,则必须输入程序的完整路径。例如,要运行D:\ Any_Folder \ any_program.exe,请在命令提示符下键入D:\ Any_Folder \ any_program.exe,然后按Enter

哈哈好招!
Ahmadul Hoq

1

我正在使用一种简单的方法。。。
将文件的快捷方式复制到C:\ users \ name,然后在“运行”对话框中键入快捷方式的名称。。。。。



0

使用CMD代替GUI来执行此操作。

  1. 使可执行文件位置在CMD中可用,即创建PATH变量:

    例如:

    • 场景:您想从CMD打开Acrobat
    • 设置路径:CMD类型

      SET ACROBAT="C:\Program Files (x86)\Adobe\Acrobat 11.0\Acrobat"
      
  2. 从CMD执行文件:

    在CMD类型中:

    START ACROBAT
    

而已 !!!
我希望这可以帮到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.