如何将路径作为参数传递给Process.Start

时间:2017-06-01 15:37:26

标签: c# path escaping backslash xcopy

以下代码说明了一切。当我尝试将本地文件夹xcopy到网络共享时,路径全部搞砸了,CMD无法正确插入反斜杠。任何建议都是受欢迎的,已经尝试过我在网上找到的所有内容(几乎已经停留了2个小时):

string command = "xcopy /s " + @"C:\Users\Me\Desktop\TempExtract\MyApp\*.* " + @"\\TestShare\SharedFolder\Applications\ /Y /I";
Process Processo = new Process();
ProcessStartInfo Xcopy = new ProcessStartInfo("cmd.exe");
Xcopy.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
Xcopy.Arguments = command;
Processo = Process.Start(Xcopy);
Processo.WaitForExit();

这里的问题是“Arguments”无法将“\\”解码为“\”,所以我的路径如下:

C:\\Users\\Me\\Desktop\\TempExtract\\MyApp\\*.*

并且CMD不能插入双反斜杠:(帮助!

2 个答案:

答案 0 :(得分:0)

我认为问题在于您设置ProcessStartInfo的方式。所以command应该是:

string command = @"C:\Users\Me\Desktop\TempExtract\MyApp\*.* " + @"\\TestShare\SharedFolder\Applications\ /Y /I";

并添加

Xcopy.FileName = "xcopy";

这对我有用:

using System.Diagnostics;

class Program
{
    static void Main(string[] args)
    {
        var command = @"C:\Users\Me\Desktop\TempExtract\MyApp\*.* " + @"\\TestShare\SharedFolder\Applications\ /Y /I";
        var Processo = new Process();
        var Xcopy = new ProcessStartInfo("cmd.exe")
        {
            Arguments = command,
            FileName = "xcopy",
            UseShellExecute = false
        };
        Processo = Process.Start(Xcopy);
        Processo.WaitForExit();
    }
}

答案 1 :(得分:0)

尝试在开头或命令字符串中添加/c(因为cmd.exe通过/ c参数启动以下命令,请查看cmd.exe的帮助)。 如果没有这个诀窍,请在路径周围添加\"