在Windows中注册一个.exe文件,以便您可以从任何命令行运行它

246
你如何让一个.exe文件可以从Windows命令窗口的任何位置访问?是否需要输入某个注册表项?

12
http://superuser.com - David Heffernan
25个回答

160

您需要确保exe文件在一个已在 PATH 环境变量中的文件夹中。

您可以通过将其安装到已经在 PATH 上的文件夹中,或者将您的文件夹添加到 PATH 中来实现这一点。

您可以让安装程序执行此操作 - 但您可能需要重新启动计算机以确保它被捕获。


38
@KimGentes 这是卸载程序的问题。一个好的卸载程序应该能够整理干净。这并不意味着答案是错误的。 - ChrisF
4
我同意...这是安装程序的问题。但由于所有安装程序都会对变量进行此操作(它们不会解析和提取注册表项或环境变量的部分),因此解释一下似乎是明智的。如果按照指示完全操作,用户总会遇到此问题,这意味着解决方案可能应始终包括该警告。据我所知,没有任何安装包可以安装和卸载注册表条目或环境变量的部分,请告诉我是否有我不知道的。 - Kim Gentes
3
SETX 也很危险,因为它的长度限制比 PATH 变量本身要低得多,而且会截断而不是失败。 - Ben Voigt
3
Raymond Chen已经讲解了为什么这种做法不好(https://devblogs.microsoft.com/oldnewthing/20110725-00/?p=10073): a) 全局解决方案却只是局部问题;b) PATH长度有限制,可能会达到上限;c) 由于搜索硬盘空间更大,会减缓所有程序启动的速度;d) 在卸载时很难撤销。实际上,App Paths就是为此而引入的,但它们只适用于START命令。请参考下面Andreas Rejbrands的回答,并使用“START /WAIT /B your_exe”来运行程序。 - Krishty
1
@wordsforthewise 你可能需要重新启动机器。这完全取决于安装程序的编写方式以及在我撰写此答案后的12年间发生的事情。 - ChrisF
显示剩余5条评论

154

Windows 10、8.1、8

打开开始菜单,

  1. 输入 编辑环境变量
  2. 打开选项 编辑系统环境变量
  3. 点击 环境变量... 按钮
  4. 你会看到两个框,在 系统变量 框中找到 path 变量
  5. 点击 编辑
  6. 一个窗口弹出,点击 新建
  7. 键入您的 .exebatch 文件的目录路径目录路径指排除路径中的文件名)
  8. 在所有打开的窗口上点击 确定,然后重新启动命令提示符

19
这是唯一帮助了我的答案。我想补充一点,即“重新启动系统”并不必要,只需重新启动命令提示符即可。 - Joffrey Baratheon
6
使用WinKey+R组合键,然后键入SystemPropertiesAdvanced即可。 - elpezganzo
为了使其正常工作,我还按照Ben Voigt在此线程中提供的答案所描述的做法进行了操作。 - thymaro
如果exe文件名很长,例如"C:\Windows\linkerd2-cli-edge-21.9.1-windows.exe",那么您可以将其重命名为linkerd.exe,并将其目录添加到"C:\Program Files\Linkerd",然后使用它:PS C:\Code> linkerd linkerd管理Linkerd服务网格。用法: linkerd [command]可用命令: check 检查Linkerd安装是否存在潜在问题 - Vinay
1
取决于您期望的行为,@JobaDiniz,将其设置在系统环境中将使其对所有用户可用。 - AmiNadimi
显示剩余2条评论

59

您可以添加以下注册表

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\myexe.exe
在这个键中,添加一个默认字符串值,其中包含exe文件的路径。

1
@sherdim:我非常怀疑这一点。但是,使用“start”命令始终有效,因此您可以在cmd.exe提示符中键入“start myexe”。但是,我认为仅输入“myexe”不应该起作用(除非您在“myexe”的目录中或该目录位于“PATH”环境变量中)。 - Andreas Rejbrand
1
我只需创建一个名为myprog.cmd的小文件,其内容如下:@START myprog.exe %*。这将调用myprog.exe的“应用程序路径”条目并传递所有命令参数。该文件应该在PATH可访问的某个地方创建。 - Stavr00
1
@sherdim @andreas-rejbrand 我可以确认,如果myexe不在“PATH”中,则此方法在Windows 10上无法工作。使用此注册表更改,“start myexe”将能够正常工作,而无需将myexe添加到“PATH”中。 - davenpcj
2
这个键可以从Explorer.exe运行,如果你尝试从CMD.exe运行它会找不到。 - elpezganzo
1
这应该是被接受的答案,因为它符合微软文档START /WAIT /B your_program运行程序就像它们被添加到了PATH一样,但没有其怪癖(需要处理长度限制并在卸载时撤消)和全局副作用(由于必须搜索PATH中的另一个目录而导致每个程序调用变慢)。义不容辞的老新东西文章。 - Krishty
显示剩余2条评论

43

您需要将 .exe 文件的路径添加到环境变量 PATH 中。转至 "我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> Path" 并通过将 .exe 的目录添加到 path 中来编辑 path。

另一个解决方案是我个人偏好使用 RapidEE 进行更流畅的变量编辑。


更具体地说,你的 PATH 可能是这样的:C:\Stuff;C:\Anotherthing,如果你的可执行文件在 C:\MyNewPath 中,那么你需要将 PATH 更改为 C:\Stuff;C:\Anotherthing;C:\MyNewPath - Nick.Mc

35

不要将可执行文件放在路径上的目录中,而应该在路径上的一个目录中创建一个批处理文件来启动程序。这样做可以避免将可执行文件与其支持文件分离,并且不会意外地将其他文件夹中的内容添加到路径中。

这样的批处理文件可能如下所示:

@echo off
start "" "C:\Program Files (x86)\Software\software.exe" %*

1
你介意添加一个批处理文件的示例吗?这样会很好。 - petermeissner
我觉得这是最好的选择,我不想在路径变量中添加太多东西。我会在这个答案中编辑这样一个批处理文件的例子。 - Dino
1
我遇到的问题是它启动了一个新的 shell。我正在尝试让一个 Cygwin 二进制文件在同一个 shell 中启动,如果我直接引用它作为 C:\cygwin\bin\grep.exe,它就可以做到。 - Johann
4
@Johann:去掉 start "" ,直接使用可执行文件的路径。另外,在Cygwin中使用,你可能需要一个Cygwin shell脚本、符号链接或者一个shell别名。 - Ben Voigt
太好了,谢谢!我同意你在cygwin内的其他选项,但在这种情况下,我正在尝试从powershell使用cygwin二进制文件。 - Johann
显示剩余2条评论

22

假设我的exe文件路径是C:\Program Files\AzCopy\azcopy.exe

命令行/CMD/批处理

SET "PATH=C:\Program Files\AzCopy;%PATH%"

PowerShell

$env:path = $env:path + ";C:\Program Files\AzCopy"
我现在可以在任何位置,从任何shell中(包括命令提示符,powershell,git bash等)简单地键入并使用azcopy

这个改变是否会保持永久?$env:path 在关闭命令提示符后会恢复到它的原始状态。 - Vinay
有趣。我从未不得不重新做过它。 - Bevan

12

非常简单,不会超过30秒。

例如,软件abc位于D:/ Softwares / vlc / abc.exe

将abc.exe的文件夹路径添加到系统环境变量中。

我的电脑 -> 点击属性 -> 点击高级系统设置 -> 点击环境变量

enter image description here

enter image description here

点击确定。

现在,您只需打开命令提示符,就可以从任何地方启动该软件。 要使用abc.exe,请在命令行中键入abc。


啊,我明白了!我一直在添加一个带有路径值的“变量”,而不是将路径添加到现有的“路径”下的“exe”中。太棒了!感谢您提供的视觉提示!赞! - sud007

5

在Windows中创建简单的类Bash别名

如果要在Windows中为没有自动添加到路径的应用程序获取全局类Bash别名,而不必手动将每个应用程序添加到路径中,则下面是我想到的最简洁的解决方案,对系统的更改最少,并且具有以后进行自定义的最大灵活性:

“安装”您的别名路径

mkdir c:\aliases
setx PATH "c:\aliases;%PATH%"

添加别名

在新的Shell窗口中打开

要启动C:\path to\my program.exe,并传入所有参数,在新的窗口中打开它,请创建c:\aliases\my program.bat文件,并将以下内容复制到其中(有关start命令的详细信息,请参见NT Start Command):

@echo off
start "myprogram" /D "C:\path to\" /W "myprogram.exe" %*

在当前Shell窗口中执行

要在当前窗口中启动C:\path to\my program.exe,传递所有参数,但运行它(更像bash的操作),请创建c:\aliases\my program.bat文件,并将以下内容添加到文件中:

@echo off
pushd "C:\path to\"
"my program.exe" %*
popd

在当前Shell窗口中执行2

如果应用程序在操作时不需要更改当前工作目录,您可以将可执行文件的符号链接添加到别名文件夹中:

cd c:\aliases\
mklink "my program.exe" "c:\path to\my program.exe"

Setx 是一个可怕的建议,它会破坏长 PATH 变量。 - Ben Voigt

5

将路径添加到环境变量中,步骤如下(Windows 10):

  1. 在搜索栏中键入“环境变量”,然后选择打开“系统属性”窗口。
  2. 点击“环境变量...”按钮。
  3. 在“环境变量”选项卡中,双击“系统变量”部分的“Path”变量。
  4. 通过双击空行并粘贴路径,将包含 .exe 文件的文件夹的路径添加到“Path”中。
  5. 单击“确定”并退出。打开一个新的命令提示符,并从任何文件夹运行该命令即可。

5

在 windows 上,对于这样一个简单的任务居然没有简单的解决方案,令人惊讶。我创建了这个小的 cmd 脚本,您可以使用它来定义 Windows 别名(说明在文件头部)。

https://gist.github.com/benjamine/5992592

这基本上是类似于 NPM 或 Ruby Gems 工具用于注册全局命令的方法。


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