C#中Process.StartInfo.Arguments参数解析异常求助
问题原因与解决方案
核心问题:参数中的短横线符号不一致
你的代码里构建的DScmd字符串混用了两种不同的短横线符号:
- 正确的半角减号(ASCII码45):比如
-h、-L中的- - 全角破折号(Unicode U+2013):比如
–b60K、–d60中的–
命令行执行时,系统会自动兼容处理这种符号差异,但C#的Process类会严格按字符串拆分参数,diskspd.exe无法识别全角破折号开头的参数,就把这些内容当成要测试的路径处理,导致错误。
修复步骤
把所有全角破折号–替换成半角减号-即可,修改后的代码片段如下:
if (rdoOLTP.Checked) { DScmd = "-b8K -d180 -h -L -o32 -t3 -r -w75 -c5G " + qPath; } else { DScmd = "-b60K -d60 -h -L -o32 -t1 -s -w100 -c1G " + qPath; }
额外注意点
- 当
UseShellExecute = false时,Process不会通过shell解析参数,所以符号必须严格匹配程序要求的格式 - 你用
string.Format("\"{0}\"", txtDatPath.Text)给路径包裹引号的处理是正确的,无需调整
内容的提问来源于stack exchange,提问作者Gary P.
相关产品推荐
相关产品推荐

