在通过 Iexpress 创建的 exe 文件中使用命令行参数

Posted

技术标签:

【中文标题】在通过 Iexpress 创建的 exe 文件中使用命令行参数【英文标题】:Using command line arguments in exe files created via Iexpress 【发布时间】:2017-10-16 14:08:09 【问题描述】:

我有一个 bat 脚本,它将单个字符串作为命令行参数来确定要复制哪些配置文件。 bat 代码对于变量赋值非常简单(如下所述),并且当我自己运行它时,它可以与我抛出的任何命令行参数一起按预期工作。

@ECHO OFF
setlocal enabledelayedexpansion
set var=%1%
if "%var%" == "" (
   echo Argument missing
   EXIT 1
)

当我尝试使用 IExpress 创建一个自解压存档时,问题就出现了,使用这个 bat 文件作为安装程序。我无法弄清楚如何指示赋予可执行文件的命令行参数应该传递给安装程序(bat 脚本)。本质上,我希望能够运行:

myiexpressexecutable.exe arg1

从 Windows 命令行并让 bat 安装程序将“var”分配给“arg1”的任何值。

我不确定是我不知道正确的语法还是 IExpress 不允许这样做。我尝试将 IExpress 向导中的安装程序设置为两者:

cmd.exe /c zabbix_install.bat %1

cmd.exe /c zabbix_install.bat %*

在这两种情况下,如果我尝试将参数传递给生成的可执行文件,我都会收到消息“命令行操作语法错误。键入 /? 以获得帮助”。当我不传递任何参数时,底层 bat 脚本会运行,但会将 %1 或 %* 视为文字字符串“%1”或“%*”。

当我将 iexpress 中的安装程序设置为:

cmd.exe /c zabbix_install.bat

当我包含可执行文件的命令行参数时,我收到相同的“命令行操作语法错误”消息。当我在没有任何参数的情况下运行这个 exe 时,底层批处理脚本会失败,因为 var 是一个空字符串。

谁能帮我弄清楚我在为这个 exe 设置安装程序时做错了什么?或者有谁知道 IExpress 是否根本无法创建带有命令行参数的 exe?

谢谢

【问题讨论】:

【参考方案1】:

如果你使用

myiexpressexecutable.exe /? 

它告诉你一些关于参数的信息。 将iexpress中的程序设置为

cmd.exe /c zabbix_install.bat

然后运行编译后的文件,参数如下:

myiexpressexecutable.exe /c:" cmd.exe /c zabbix_install.bat arg1"

注意 cmd.exe 的引号和开头之间的空格。文档说它应该像这样运行,但它可能不正确。也可以尝试不使用空格。

【讨论】:

以上是关于在通过 Iexpress 创建的 exe 文件中使用命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

IExpress 2 和 bat 文件路径

IExpress.exe 创建的自解压和运行 msi/msp 的命令行参数

iexpress 提取文件,然后从 exe 中运行 vbs 引用文件

无法将参数发送到通过 IExpress 转换为应用程序的批处理文件

Iexpress:pygame.error:文件不是 Windows BMP 文件

快递。如何将文件夹设置为 iexpress SED 格式的数据源?