vak*_*kas 8 .net c# file-io console-application
public static void launchProcess(string processName, string arguments, out string output)
{
Process p = new Process
{
StartInfo = { UseShellExecute = false, RedirectStandardOutput = true, FileName = processName, Arguments = arguments }
};
p.Start();
output = p.StandardOutput.ReadToEnd();
p.WaitForExit();
}
Run Code Online (Sandbox Code Playgroud)
如果我的参数包含文件名,例如:
D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS
Run Code Online (Sandbox Code Playgroud)
然后我得到错误:
Ale*_*ith 12
它需要双打引号,但也可能需要@来对待字符串逐字(逐字字符串),即"\"在字符串中有特殊含义,例如\ t表示选项卡,所以我们要忽略\
所以不仅是双引号,还有@
string myArgument = @"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS";
Run Code Online (Sandbox Code Playgroud)
如果有空格,我在大多数应用程序中使用以下内容(如果需要)在字符串的开头和结尾添加双引号.
public string AddQuotesIfRequired(string path)
{
return !string.IsNullOrWhiteSpace(path) ?
path.Contains(" ") && (!path.StartsWith("\"") && !path.EndsWith("\"")) ?
"\"" + path + "\"" : path :
string.Empty;
}
Run Code Online (Sandbox Code Playgroud)
例子..
AddQuotesIfRequired(@"D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS");
Run Code Online (Sandbox Code Playgroud)
返回 "D:\Visual Studio Projects\ProjectOnTFS\ProjectOnTFS"
AddQuotesIfRequired(@"C:\Test");
Run Code Online (Sandbox Code Playgroud)
返回 C:\Test
AddQuotesIfRequired(@"""C:\Test Test\Wrap""");
Run Code Online (Sandbox Code Playgroud)
返回 "C:\Test Test\Wrap"
AddQuotesIfRequired(" ");
Run Code Online (Sandbox Code Playgroud)
返回空字符串
AddQuotesIfRequired(null);
Run Code Online (Sandbox Code Playgroud)
返回空字符串
编辑
根据建议,更改了函数的名称,并添加了空引用检查.
添加了检查以查看字符串的开头和结尾是否已存在双引号,以免重复.
将字符串检查功能更改IsNullOrWhiteSpace为检查空格以及空或空,如果是,则返回空字符串.