我有一个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?
谢谢
最佳答案
如果您使用
myiexpressexecutable.exe /?
它告诉你一些有关参数的信息。 将iexpress中的程序设置为
cmd.exe /c zabbix_install.bat
然后运行编译后的文件,参数如下:
myiexpressexecutable.exe /c:" cmd.exe /c zabbix_install.bat arg1"
注意引号和 cmd.exe 开头之间的空格。文档说它应该像这样运行,但它可能不正确。也尝试不加空格。
关于windows - 在通过 Iexpress 创建的 exe 文件中使用命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46772330/