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*
格式的另一种选择。
无法使用 ^ 符号从批处理文件传递多行参数(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*
格式的另一种选择。