我有一个程序,分别设置了 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
.之后,无需对批处理文件执行任何操作,因此它关闭了。