Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从diskpart读取输出_C++_Windows_Qt - Fatal编程技术网

C++ 从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

格式化笔驱动器时,我需要读取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:

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
组合。请不要多次问同一个问题;这会让以后搜索此网站的人感到困惑。请不要多次问同一个问题;这使得人们在将来搜索这个网站时感到困惑。