select disk 1convert dynamic noerrselect disk 2convert dynamic noerrcreate volume stripe disk=1,2 noerrassign letter=X noerr
.
.
从命令提示符运行时:diskpart / s myScript.txt它按预期工作.
但是,当使用win API的CreateProcess()运行时,转换命令都可以工作,但是当它到达时
创建卷,它显示:
"The arguments you specifIEd for this command are not valID"
.
.
现在,为了让事情更有趣:
如果第二次从CreateProcess()再次执行脚本(给定磁盘现在已转换并且它为转换comamnds提供了正确的错误),
当它到达创建卷时,它确实有效.
这让我觉得它与磁盘和/或可执行文件有关吗?
正确方向上的任何一点都值得赞赏,因为这非常令人困惑.谢谢.
STARTUPINFO si;PROCESS_informatION pi;ZeroMemory(&si,sizeof(si));ZeroMemory(&pi,sizeof(pi));si.cb = sizeof(si);strncpy( command,"diskpart.exe /s myScript.txt",(sizeof(command) - 1) ); CreateProcess( "c:\windows\system32\diskpart.exe",command,NulL,TRUE,&si,&pi ) );
结束原始问题_________________________________________________________
编辑:
更新和更多信息:
>在创建卷命令之前添加了大约15 – 20秒的延迟,仍然得到相同的错误消息.
>此外,将工作分成两个脚本,两个调用
的CreateProcess().在第二个脚本上,只需调用“创建卷”
并分配,它挂了一会儿,然后回来了“这个
命令无法在此时完成“..或者其他东西
影响.
>另一件需要注意的事情:在第一个脚本上,将它们放入
动态,它运行速度比运行速度快两倍
命令提示符.
也许应该只运行整个事情两次(第二次运行时出错),因为它确实有效
EDIT2
这两个脚本现在正在工作,或者在我再次尝试时工作.不知道为什么它第一次不起作用.
基于这个假设:
您可以在create volume命令之前添加detail disk命令以查找磁盘的状态.这将告诉你一些关于磁盘当前状态的信息.如果磁盘2没有显示任何有趣的内容,也要选择第一个磁盘以显示其详细信息.您从中获得的信息可能会有所帮助.
至于实际解决问题,通过使磁盘联机和脱机引入延迟可能会有所帮助.例如:
select disk 1convert dynamicselect disk 2convert dynamicselect disk 1offline diskselect disk 2offline diskselect disk 1online diskselect disk 2online diskcreate volume stripe disk=1,2assign letter=X总结
以上是内存溢出为你收集整理的c – 从CreateProcess()执行时,diskpart不能正确处理脚本全部内容,希望文章能够帮你解决c – 从CreateProcess()执行时,diskpart不能正确处理脚本所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)