提问人:Jordan Burkhardt 提问时间:11/2/2023 更新时间:11/2/2023 访问量:61
在 C++ 中从 ShellExecute() 和 System() 运行时,批处理文件未按预期工作
Batch file is not working as expected when run from ShellExecute() and System() in C++
问:
我正在尝试使用以下代码从 c++ 执行 .bat 文件 startcp2k。
ShellExecute(NULL, TEXT("open"), TEXT("cmd.exe"),TEXT("/C startcp2k.bat -i input.txt -o output.txt"), TEXT("C:\\Path\\To\\Program\\"), SW_SHOWNORMAL);
当我打印函数的输出时,它返回 2A,表示它正在执行,因为它大于 32。当我在命令提示符下运行此命令时,我得到一个文本输出文件,但是使用上述命令在 c++ 中运行时我没有得到它。
我在使用 Visual Studio 2022 的 Windows 上。我打算稍后在 linux 上编译它。我没有创建 .bat 文件,我必须使用这个文件。
我在整个计算机中搜索输出文件,它没有重定向到意想不到的地方,只是没有输出。
我正在编译 64 位,而 .bat 文件为 64 位。.bat 文件对我的计算机管理员、“系统”和我的帐户具有完全权限。
我也尝试使用system(),但我遇到了同样的问题。我尝试了 CreateProcess(),但它对我来说太复杂了,我无法运行,而且我不相信它会逃避这个问题,因为 ShellExecute() 调用创建进程。
答: 暂无答案
评论
2A
2A
startcp2k.bat
PATH
TEXT