gpt4 book ai didi

c - system() 函数未按预期执行 shell 命令

转载 作者:行者123 更新时间:2023-11-30 16:27:12 25 4
gpt4 key购买 nike

我有以下命令,它从注册表中读取操作系统名称数据,如下所示:

for /f "tokens=2*" %a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| findstr "REG_"') do @echo %b

output :    Windows 10 Enterprise

现在,这个命令在命令提示符中确实有效,但是当我在system()函数中使用它时,它不起作用按预期运行。

我的代码:

CHAR szCommandLine[MAX_PATH * 4] = { 0 };
StrCpyA(szCommandLine, "for /f \"tokens = 2*\" %%a in ('reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v ProductName ^| findstr \"REG_\"') do @echo %%b");
// print the command
printf(szCommandLine);
printf("\n");
// run the command
system(szCommandLine);

输出:

for /f "tokens=2*" %a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| findstr "REG_"') do @echo %b

%%a was unexpected at this time.

现在我不知道 system() 函数中到底发生了什么,它的行为是错误的命令。实际上,我的程序中打印的命令命令提示符中正确运行的命令完全相同。

最佳答案

根据IanAbbott 有用点:

我替换了%a而不是%%a在命令参数中,因为%%是一样的%%system()函数,这在 command 中是错误的.

system("for /f \"tokens=2*\" %a in ('reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v ProductName ^| findstr \"REG_\"') do @echo %b");

关于c - system() 函数未按预期执行 shell 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52814359/

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