GetCommandLine():无法从批处理文件(GCC 编译器)传递多行参数

GetCommandLine(): unable to pass multiline arguments from batch-file (GCC-Compiler)

无法使用 ^ 符号从批处理文件传递多行参数(GCC 编译器)。

myapp.exe:

#include <stdio.h>
#include <windows.h>

int main(int argc, char** argv) {

  printf("%s", GetCommandLine());

}

run.bat(使用多行参数执行 myapp)

myapp.exe ^
aaa ^
bbb ^
ccc

实际输出为:

myapp.exe ^

预期输出为:

myapp.exe aaa bbb ccc

如何获取所有行?

我已经测试了一些其他应用程序,并且带有 ^ 符号的多行参数在那里按预期工作。它是如何工作的?

您的代码运行良好。在将输入拆分为多行时,只需确保将 '^'(抑扬符)放在最后一个字符即可。这看起来是您的代码失败的唯一原因。

例如,在 Win7 上使用您的代码,以下工作正常:

c:\Users\david\Documents\dev\src-c\tmp>bin\getcmdline.exe my ^
More? dog ^
More? has ^
More? fleas
bin\getcmdline.exe  my dog has fleas

c:\Users\david\Documents\dev\src-c\tmp>bin\getcmdline.exe ^
More? aaa ^
More? bbb ^
More? ccc
bin\getcmdline.exe  aaa bbb ccc

否则,只需将所有参数放在一行中,然后像往常一样通过 argv[x] 访问它们。

您还可以调用 CommandLineToArgvW 将命令行拆分为 argv 样式数组。这是将命令拆分为 LPWSTR* 格式的另一种选择。