如何使用 CMD 脚本运行没有 EXE 扩展名的可执行文件?

如何使用 CMD 脚本运行没有 EXE 扩展名的可执行文件?

情况是,我有一个便携式应用程序,需要设置环境变量。否则,它会尝试在用户程序数据目录中设置其设置。

为了避免在非便携模式下运行可执行文件(避免允许它在没有任何参数的情况下运行),我删除了文件的“.exe”扩展名。但是我无法运行它,无论是使用鼠标(我想要的)还是通过命令start

有没有办法运行没有“.exe”扩展名的可执行文件?

答案1

是的 - 通常只需输入程序的完整文件名即可。(该.exe要求仅在 GUI shell 中存在。)

(它可能文件需要一个扩展,所以如果您无法MyProgram运行,请将其重命名为MyProgram.notexeMyProgram.lol并重试。)

答案2

任何具有扩展名和前两个字节的文件MZ都将被视为 EXE。

请尝试以下操作:

  1. 创建一个新a.txt文件,
  2. 输入它MZ并保存它。
  3. 打开cmd,进入其文件夹,
  4. 输入a.txt并查看错误消息。

替换MZ并重MS试 - 这次记事本将运行并打开文件。

答案3

我尝试从不带 .exe 扩展名的文件运行进程。当我从 cmd.exe 执行此操作失败时,我尝试了一些 powershell 命令。以下是其中一个:

开始进程

文档中提到了默认语法和 UseShellExecute。只需:

Start-Process -FilePath .\my-program -Wait -NoNewWindow

该命令使用 UseShellExecute 语法并返回有关未将应用程序与该文件类型关联的错误。为了强制使用默认语法,我添加了 UseShellExecute 没有的参数:

Start-Process -FilePath .\my-program -Wait -RedirectStandardError ./error.txt -NoNewWindow

我的程序启动了,并将输出写入控制台。这对我来说已经足够了,因为我只需要它用于测试目的。

答案4

如果PATHEXTenv 包含.exe.EXE,则运行程序时不需要此后缀。请参阅维基百科

相关内容