从 diskpart 读取输出
Posted
技术标签:
【中文标题】从 diskpart 读取输出【英文标题】:Read output from diskpart 【发布时间】:2018-07-27 14:33:18 【问题描述】:在格式化笔式驱动器时,我需要读取 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";
但是我该如何使用它呢?它是否正确?这是检查格式化是否成功的最佳方法吗?也许没有.txt
文件的其他解决方案会更好?
【问题讨论】:
请不要多次问同一个问题;这会让以后搜索此网站的人感到困惑。 【参考方案1】:既然你已经在使用 Qt,为什么不使用 QProcess
呢?这为您节省了使用文本文件的麻烦。只需致电readAllStandardOutput
。您甚至可以检查finished
信号,它提供了ExitCode
。
【讨论】:
我在后台运行这个程序时遇到了问题,这就是我使用 ShellExecute() 的原因。更重要的是,当我将它与 QProcess 一起使用时,我的计算机崩溃了。有没有使用 ShellExecute() 读取输出的解决方案? @RanderEns:如果您使用QProcess
调用 diskpart
并且它使您的计算机崩溃,我 99% 确定这是 diskpart
的错误参数。
我用 ShellExecute() 运行所有东西,它发生过一次,带有完整的参数列表来格式化 pendrive。当我仅通过选择和清理磁盘对其进行测试时,它工作正常。但是上次真的很奇怪,我还需要在后台运行 ShellExecute() 运行良好。使用 QProcess 时我遇到了问题。
@RanderEns 您如此坚定地声称它,我希望您有一个简短的(30-40 行!)测试用例来重现该问题。如果不是,那么很可能您在做其他根本性错误的事情,并将其归咎于 QProcess
+ diskpart
组合。以上是关于从 diskpart 读取输出的主要内容,如果未能解决你的问题,请参考以下文章