c# - 使用2个变量问题c#执行行命令参数
问题描述
我正在尝试使用 2 个参数打开我的 .exe“应用程序”。当我自己编写命令行时," "
它不想工作。当我使用它编写命令行时,"C:/Path" "A" "B"
它确实有效。
我该如何解决?
if(element.SaveType == "1")
{
DirectoryInfo srcDir = new DirectoryInfo((string)element.SourcePath);
DirectoryInfo dstDir = new DirectoryInfo((string)element.DestinationPath);
if (element.didEncrypt == true)
{
if (Directory.GetFiles(srcDir.FullName, ((string)element.EncryptExt)).Length == 0)
{
string pat = System.IO.Path.Combine(@"C:\Users\Client Fractal\source\repos\CryptoSoft\CryptoSoft\bin\Debug\netcoreapp3.0\CryptoSoft.exe");
Process p = new Process();
p.StartInfo.FileName = pat;
p.StartInfo.Arguments = srcDir.FullName + dstDir.FullName; // source / target;
Console.WriteLine(p.StartInfo.Arguments);
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.Start();
}
}
}
解决方案
命令行参数以空格字符分隔,因此您需要插入空格字符,否则您的参数最终会被挤在一起。
p.StartInfo.Arguments = srcDir.FullName + " " + dstDir.FullName;
但是,当然,如果其中一个srcDir.FullName
或dstDir.FullName
包含它们自己的空格字符(并FullName
建议它们这样做),您将需要用双引号字符将它们括起来。
p.StartInfo.Arguments = "\"" srcDir.FullName + "\" \"" + dstDir.FullName + "\"";
推荐阅读
- java - 具有条件 Math.abs(double) 的 HashMap 流
- rust - 为什么这个迭代器不能作为 flat_map 闭包的返回值呢?
- c# - 无法在 C# 中获取 Azure Oauth V2 访问令牌
- javascript - 我在 d3 中收到“回调未定义错误”
- pandas - 从 matplotlib.axes 获取线条和标签
- python - 查看一个项目是否直接跟在列表中的另一个项目之后(python)
- python - 如何将我的 python 逻辑应用到 tkinter GUI?这是一个简单的 GET 请求程序
- r - 将变量传递给 tidyr::pivot_wider 的 names_glue 参数
- python - 如何理解多维张量?
- java - MVC 模式帮助!爪哇