首页 > 解决方案 > 使用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();

        }
    }
}

标签: c#cmd

解决方案


命令行参数以空格字符分隔,因此您需要插入空格字符,否则您的参数最终会被挤在一起。

p.StartInfo.Arguments = srcDir.FullName + " " + dstDir.FullName;

但是,当然,如果其中一个srcDir.FullNamedstDir.FullName包含它们自己的空格字符(并FullName建议它们这样做),您将需要用双引号字符将它们括起来。

p.StartInfo.Arguments = "\"" srcDir.FullName + "\" \"" + dstDir.FullName + "\"";

推荐阅读