2011-08-19 42 views
1

我正在为Application.ExecutablePath获取一个字符串变量,然后通过ProcessStartInfo将该变量传递给命令行并带有一些参数。我的代码工作正常,只要“ExecutablePath”不包含空格,但如果它的确如C:\ documents和settings \ jsmith \ desktop,则C#会将空格作为转义处理,并且不会从命令行获得结果。处理Application.ExecutablePath中的空间

这里是我如何获取路径,还发送命令“lmutil”

string execName = Application.ExecutablePath; 
FileInfo execFileInfo = new FileInfo(execName); 
execPath = execFileInfo.DirectoryName; 

string lmUtil = @"\lmutil"; 
lmExec = execPath + lmUtil; 

This is the method in which I need to handle quotes in paths 

GetLicStats(lmExec + " lmstat -a -c " + licport + "@" + curAdd); 

我怎样才能确保,如果它包含空格lmExec正确处理。

回答

3
GetLicStats(lmExec + " lmstat -a -c " + licport + "@\"" + curAdd + "\""); 

地址各地把双引号通常工作

0
execPath = execFileInfo.DirectoryName.Replace(" ", "\ "); 

只需用空格替换空格即可。

+0

感谢您的答复,并在你让我觉得在这个正确的方式帮助。我最终在lmexec周围添加了引号,如下所示:GetLicStats(“\”“+ lmExec +”\“”+“lmstat -a -c”+ licport +“@”+ curAdd); –