批处理脚本在解压缩SFX WinRAR文件后不会在临时文件夹中运行



我有一个程序,分别设置了 32 位和 64 位。我的目标是创建一个可以运行相应安装程序的可执行文件。因此,我创建了一个文件夹并将两个设置放在其中,然后编写了以下脚本:

@echo off
if %PROCESSOR_ARCHITECTURE%==AMD64 goto :x64
if %PROCESSOR_ARCHITEW6432%==AMD64 goto :x64
:x86
    "%cd%"setup.exe
    exit
:x64
    "%cd%"setup-x64.exe
    exit

之后,我在WinRAR中使用此文件夹创建了SFX文件,指向BAT文件。但是当我运行它时,会弹出一个命令行窗口并立即关闭,没有任何反应。我转到临时文件夹并双击 BAT 文件,安装程序开始。原始文件夹中也会发生同样的情况。发生了什么,我该如何解决?谢谢!

%cd%引用批处理

文件的调用目录。

例如,批处理文件在%USERPROFILE%DesktopFolderbat.bat

echo %cd%
pause

例如,您可以从命令行启动它,如下所示:

C:>%USERPROFILE%DesktopFolderbat.bat

它应该回显C:因为那是你调用它的地方。

从评论中解决问题的两种方式:

使用 pushd "%~dp0" -推送批处理文件的目录>将导致变量值更改 %cd%

不要使用"%cd%"而是"%~dp0"

这两种方法都使用批处理文件的第 0 个参数是其路径这一事实。

如果

可能,如果从命令提示符本身调试文件,则可以阻止命令行窗口关闭。有了这个,您应该已经看到一个错误,指出类似 ...setup.exe not found .之后,无需对批处理文件执行任何操作,因此它关闭了。

最新更新