gpt4 book ai didi

exe 的命令行参数

转载 作者:行者123 更新时间:2023-12-04 03:57:14 25 4
gpt4 key购买 nike

Powershell 字符串有点问题。我正在使用一个名为 SymmetricDS 的 Java 程序它为某些管理功能接受 Windows 批处理文件的参数。其中之一是打开节点注册,传递包含节点组和 ID 的字符串:

& .\bin\sym.bat -p symmetric.properties --open-registration 'store,01'

在批处理文件中,调用了 java,我在上面传递的属性是这样传递的:

java -Dthis -Dthat -Dfoo -Dbar %1 %2 %3 %4 %5 %6 %7 %8 %9

java本身的函数在这部分之后失败了:

int index = argument.trim().indexOf(",");
if (index < 0) {
throw new SymmetricException("LauncherMissingFilenameTriggerSQL", OPTION_OPEN_REGISTRATION);
}

index 显然是 -1。为什么找不到逗号字符,我不知道。我只知道当我在 .cmd 或 .bat 文件中运行相同的程序时,它工作得很好:

.\bin\sym.bat -p symmetric.properties --open-registration "store,01"

我怀疑这与 Powershell 的字符串是 Unicode 有关,并且在从那里到批处理文件然后到 java 的过程中发生了一些不正确的事情。

有人知道如何在 Powershell 中直接调用它吗?

已解决:zdan's answer像这样欺骗 Powershell 一样有效:

.\bin\sym.bat -p symmetric.properties --open-registration '"store,01"'

最佳答案

这不是 unicode 问题。你绊倒了 powershell 的解析器。当您调用调用运算符时,powershell 会解析您的其余参数,然后将它们传递给您正在调用的脚本。字符串 'store,01' 周围的单引号有效地被剥离并被解释为一个列表,该列表扩展为两个单独的参数。

只需直接运行 cmd.exe,同时仔细引用您的命令字符串:

 cmd.exe /c ' .\sym.bat -p symmetric.properties --open-registration "store,01" '

请注意,您必须将命令作为单个字符串传递给 cmd.exe,否则它会被 powershell 解析。

关于exe 的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4430131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com