在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]

Posted

技术标签:

【中文标题】在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]【英文标题】:In Windows cmd, how do I run an executable in the current directory (instead of one with the same name in %PATH%) without referring to the full path? [closed] 【发布时间】:2014-06-20 18:15:57 【问题描述】:

我正在尝试从一个目录运行一个可执行文件foobar,但Windows 也恰好有一个名为foobar 的可执行文件(或命令)。在 UNIX 中,我只会写

./foobar

但 Windows cmd 似乎不理解这一点。鉴于我不想将此目录添加到我的%PATH%,是否有另一种方法可以运行当前目录的foobar 而无需明确输入路径?

【问题讨论】:

从您的评论到保罗的回答,您应该将问题更改为“如何运行与内部命令同名的外部程序 在 Windows 中,路径有反斜杠而不是正斜杠。所以正确的语法是.\date,这确实会运行可执行文件(如果存在)并且永远不会运行内部命令。 @HarryJohnston - 我不敢相信我错过了。我已经习惯了正斜杠,以至于.\date 对我来说甚至看起来都不像正确的语法。谢谢。 【参考方案1】:

Windows 在搜索路径之前总是先查看当前目录。 如果您尝试从程序运行命令,请先尝试“cd”到目录,如下所示:

copy con run_foobar.bat
cd c:\myfoobardirectory
foobar
"<CTRL> + Z" 

一种特殊情况是,如果您尝试执行与 cmd.exe 的内部命令名称匹配的文件,例如 'date',在这种情况下,内部的 'date' 命令将被执行,即使您在当前目录中有一个本地“date.exe”可执行文件。

您可以通过在当前目录中输入全名'date.exe'来强制执行本地程序文件,这将覆盖内部的'date'命令。

还要注意,在 PowerShell 中,行为与 Cmd shell 不同,因此即使您在本地目录中的 PowerShell 中键入“java”或“java.exe”之类的命令,路径命令也会被执行,即使有一个同名的本地文件。要强制执行本地文件,我们将使用 linux 样式 './java' 或 './java.exe'。

【讨论】:

你确定吗?我已将cd 编入C:\Program Files (x86)\GnuWin32\bin,其中包含date.exe(UNIX 的Windows 端口date),但发出datedate.exe 最终都会执行Windows 的date @Andrew 和 paul,你们都是对的,你们只是在谈论两件不同的事情。 Andrew 给出的date 示例不是应用程序,它是内置于Windows 命令行处理器的内部命令。所以是的,无论如何它都会被执行。但 Windows 确实 在查看路径的其余部分之前搜索当前目录,因此如果当前目录存在,notepad.exe 将从当前目录执行,而不是与操作系统捆绑在一起的 notepad.exe 和位于路径中。 @AndrewCheong date 是一种特殊情况,因为它也是cmd.exeinternal 命令,并且这些确实覆盖了磁盘上的文件。运行 GNU 工具的唯一方法是显式使用 date.exe 而不是 date。您应该提到您正在尝试在问题中运行 date 而不是 foobar,因为这会产生影响 @a_horse_with_no_name,这就是我的想法,但即使我运行 date.exewith .exe),Windows 命令也会运行,这就是导致我的原因相信它一定是一个应用程序...... @AndrewCheong:当我运行 date.exe 而我的 current 目录是 date.exe 所在的目录时,则使用该目录而不是内部命令

以上是关于在 Windows cmd 中,如何在当前目录中运行可执行文件(而不是在 %PATH% 中具有相同名称的可执行文件)而不参考完整路径? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用命令“copy/b*.tdl hb1.mp4”对这些*.tdl文件进行合并?

Windows7怎么在目录下直接进入cmd命令行

如何在Windows cmd终端中设置cd命令的默认目录?

请模拟一下win10的cmd

Linux中如何将当前工作目录切换到新增的用户家目录?

如何在当前目录下快速打开cmd(或者以管理员的身份打开)