c – 从CreateProcess()执行时,diskpart不能正确处理脚本
diskpart“myScript.txt”:
select disk 1 convert dynamic noerr select disk 2 convert dynamic noerr create volume stripe disk=1,2 noerr assign letter=X noerr . 从命令提示符运行时:diskpart / s myScript.txt它按预期工作. 但是,当使用win api的CreateProcess()运行时,转换命令都可以工作,但是当它到达时 "The arguments you specified for this command are not valid" . 现在,为了让事情更有趣: 这让我觉得它与磁盘和/或可执行文件有关吗? 正确方向上的任何一点都值得赞赏,因为这非常令人困惑.谢谢. 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:WINDOWSsystem32diskpart.exe",command,NULL,TRUE,&si,&pi ) ); 结束原始问题_________________________________________________________ 编辑: >在创建卷命令之前添加了大约15 – 20秒的延迟,仍然得到相同的错误消息. 也许应该只运行整个事情两次(第二次运行时出错),因为它确实有效 EDIT2 解决方法
因为您的脚本第二次工作似乎最可能的原因是与时序相关 – 在执行create volume命令时卷尚未就绪.
基于这个假设: 您可以在create volume命令之前添加detail disk命令以查找磁盘的状态.这将告诉你一些关于磁盘当前状态的信息.如果磁盘2没有显示任何有趣的内容,也要选择第一个磁盘以显示其详细信息.您从中获得的信息可能会有所帮助. 至于实际解决问题,通过使磁盘联机和脱机引入延迟可能会有所帮助.例如: select disk 1 convert dynamic select disk 2 convert dynamic select disk 1 offline disk select disk 2 offline disk select disk 1 online disk select disk 2 online disk create volume stripe disk=1,2 assign letter=X (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |