windows - 如何检测 Windows 批处理文件是否从 ZIP 存档运行

标签 windows batch-file zip

我们的应用程序(在 Windows 上)分发的方式之一是作为 ZIP 存档。在这个存档中是一个用于启动应用程序的批处理文件。用户应该在运行我们的应用程序之前解压缩存档文件,但用户经常会忽略我们的说明并尝试在不先解压缩存档文件的情况下运行应用程序。当用户这样做时,应用程序无法启动,但(对用户而言)并不清楚导致失败的确切原因。我们想从批处理文件中检测它是否正在从 ZIP 存档中运行,如果是,则向用户显示一条消息,提醒他先解压缩存档。

但是,我完全不清楚如何检测这种情况。虽然批处理变量 %cmdcmdline% 包含运行批处理文件的命令,但似乎无法使用路径来可靠地判断路径是否指向 ZIP 存档。例如,我将以下名为 test.bat 的批处理文件放入 ZIP 存档中:

echo %cmdcmdline%
pause

从存档中运行时的输出是:

cmd /c ""C:\Users\liana\AppData\Local\Temp\Temp1_test.zip\test.bat" "

现在,似乎可能 Temp1_test.zip 是一个 ZIP 存档,而不是一个真正的目录,但不能保证它是。显然,Windows 知道如何区分,因此必须有比简单地检查“.zip”是否出现在某处路径中更可靠的方法。但是如何呢?

最佳答案

您的程序实际上并不是从存档“内部”运行的。在运行之前,存档首先扩展到一个临时目录(位置可能因使用的存档工具而异)。

考虑到这一点,很明显永远无法确定一种或另一种方式,因此最好的办法可能是检查是否存在运行程序所需的其他文件, 相对于批处理文件的位置。

关于windows - 如何检测 Windows 批处理文件是否从 ZIP 存档运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1658000/

相关文章:

windows - 如何在 Windows git hooks 中使用 cygwin 路径?

Java psexec 交互式远程命令行

c# - 获取文件夹 ID C#

windows - 删除目录中的所有冗余文件

python - 将多列合并为矩阵python

java - 我可以在 Linux 环境中使用 Window Builder on Java 运行应用程序吗?

windows - 如何从 Windows 批处理文件发送简单的电子邮件?

batch-file - 即使在 BAT 脚本中成功执行 ROBOCOPY 命令,JENKINS 作业也会失败

google-drive-api - 如何在 Windows 10 中压缩一个大文件夹,将其上传到 GDrive,然后解压缩?

java - 可以在其他程序上打开的文件的 ZipException