C++ 从diskpart读取输出
格式化笔驱动器时,我需要读取diskpart的输出。这是我在后台设置格式的代码C++ 从diskpart读取输出,c++,windows,qt,C++,Windows,Qt,格式化笔驱动器时,我需要读取diskpart的输出。这是我在后台设置格式的代码 QString exePath = "diskpart.exe"; QString arguments = "/s pendrive.txt"; ShellExecuteW(NULL, NULL, (LPCWSTR)exePath.toStdWString().data(), (LPCWSTR)arguments.toStdWString().data(), NULL, SW_HIDE); pendrive.txt
QString exePath = "diskpart.exe";
QString arguments = "/s pendrive.txt";
ShellExecuteW(NULL, NULL, (LPCWSTR)exePath.toStdWString().data(), (LPCWSTR)arguments.toStdWString().data(), NULL, SW_HIDE);
pendrive.txt:
select disk 1
clean
create partition primary
select partition 1
active
format quick fs=ntfs
assign
QString arg ="diskpart /s pendrive.txt > output.txt";
如何读取输出以检查是否已成功完成所有操作
我发现这个:
select disk 1
clean
create partition primary
select partition 1
active
format quick fs=ntfs
assign
QString arg ="diskpart /s pendrive.txt > output.txt";
但是我怎么用呢?这是正确的吗?这是检查格式化是否成功的最好方法吗?也许没有
.txt
文件的其他解决方案会更好?既然您已经使用了Qt,为什么不使用呢?这样就省去了文本文件的麻烦。只需调用readAllStandardOutput
。您甚至可以检查finished
信号,它提供了一个ExitCode
,既然您已经使用了Qt,为什么不使用?这样就省去了文本文件的麻烦。只需调用readAllStandardOutput
。您甚至可以检查finished
信号,它提供了一个ExitCode
我在后台运行这个程序时遇到问题,这就是我使用ShellExecute()的原因。更重要的是,当我将它与QProcess一起使用时,我的计算机崩溃了。使用ShellExecute()读取输出有什么解决方案吗?@RanderEns:如果您使用QProcess
调用diskpart
,它使您的计算机崩溃,我99%确定diskpart
的参数有误。我运行ShellExecute()的所有操作都是一样的,在使用完整参数列表格式化pendrive时发生过一次。当我只使用选择和清理磁盘来测试它时,它工作得很好。但上一次真的很奇怪,我还需要在后台运行ShellExecute()的功能。对于QProcess,我在这方面遇到了问题。@RanderEns您如此坚定地宣称,我希望您有一个简短的(30-40行!)测试用例来重现这个问题。如果不是,那么很可能您在做其他根本错误的事情,并将其归咎于QProcess
+diskpart
组合。我在后台运行此程序时遇到问题,这就是我使用ShellExecute()的原因。更重要的是,当我将它与QProcess一起使用时,我的计算机崩溃了。使用ShellExecute()读取输出有什么解决方案吗?@RanderEns:如果您使用QProcess
调用diskpart
,它使您的计算机崩溃,我99%确定diskpart
的参数有误。我运行ShellExecute()的所有操作都是一样的,在使用完整参数列表格式化pendrive时发生过一次。当我只使用选择和清理磁盘来测试它时,它工作得很好。但上一次真的很奇怪,我还需要在后台运行ShellExecute()的功能。对于QProcess,我在这方面遇到了问题。@RanderEns您如此坚定地宣称,我希望您有一个简短的(30-40行!)测试用例来重现这个问题。如果没有,那么很可能您在做其他根本错误的事情,并将其归咎于QProcess
+diskpart
组合。请不要多次问同一个问题;这会让以后搜索此网站的人感到困惑。请不要多次问同一个问题;这使得人们在将来搜索这个网站时感到困惑。