gpt4 book ai didi

c++ - "|"管道运算符在 C++ 的命令行中不起作用

转载 作者:行者123 更新时间:2023-11-28 03:57:46 26 4
gpt4 key购买 nike

我有一个与 DB2 数据库交互的 Windows 应用程序。在我的应用程序中,我有通过命令行界面执行一些 DB2 命令的代码。我使用 windowsAPI“ShellExecuteEx()”通过命令行执行这些 DB2 命令。

下面是通过命令行执行DB2命令的代码。

  string command = "/c /w /i DB2 UNCATALOG NODE DB_DATABASE ">>" test.log | echo 
%date% %time% >> test.log";
SHELLEXECUTEINFO shellInfo;
ZeroMemory(&shellInfo, sizeof(shellInfo));
shellInfo.cbSize = sizeof(shellInfo);
shellInfo.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
shellInfo.lpFile = "db2cmd";
shellInfo.lpParameters = command.c_str();
if (ShellExecuteEx(&shellInfo))
{
WaitForSingleObject(shellInfo.hProcess, INFINITE);
CloseHandle(shellInfo.hProcess);
bStatus = true;
}
else
{
bStatus = false;
}

代码已成功执行,但是如果观察到 test.log,我只会得到 DB2 命令的结果,而不是日期和时间。如果你看到上面的命令有“|”管道运算符和回显命令在 test.log 中记录日期和时间

请注意,如果我通过单独的命令行(即不通过代码)执行上述 DB2 命令。我能够在 test.log 中查看日期和时间日志以及 DB2 命令结果。以下是我通过命令行执行的完整命令。DB2CMD/c/i/w DB2 UNCATALOG NODE DB_DATABASE ">>"test.log | echo %date% %time% >> 测试日志

据我所知,由于 DB2 命令已通过代码成功执行,因此仅使用“|”会出现问题管道运算符或 echo 命令。

最佳答案

管道机制用于将一个程序的输出作为输入传递给下一个程序。我猜你的情况是 && separator会更合适。

尝试让cmd处理多个语句的执行:

cmd /c "db2cmd ... && echo ..."

关于c++ - "|"管道运算符在 C++ 的命令行中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2762949/

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