c# - Process.StartInfo.Arguments - 带有空格的dir的路径

时间:2016-06-17 20:21:27

标签: c# xcopy

我需要编写一个小型控制台程序,用于将一些内容复制到AppData / Local。

作为来源,我有一个空格的文件夹。让我们称之为“我的文件夹”。我的文件夹包含子文件夹和其他内容。

所以我有./MyFolder,我需要将其复制到C:\ Users \ Name \ AppData \ Local \ My Folder

现在,我做了什么:

  1. 我知道,我的文件夹存在于./

  2. 我可以访问AppData,因为在复制之前,我需要删除一些 旧垃圾我之前创建的文件夹。

  3. 我拥有管理员权限。

  4. 现在,我有这段代码:

    Process process = new Process();
    process.StartInfo.FileName = "xcopy";
    
    string stringsource = @"./My Folder";
    string stringdestination = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
    string all = stringsource + " " + stringdestination + "  /e /h /c /I";
    /*this is for testing, resulting in CORRECT string path*/
    Console.WriteLine(all);
    process.StartInfo.Arguments = all;
    process.Start();
    

    这是在try / catch块中,结果没有错误。但是在目的地AppData / Local中,没有新的“我的文件夹”。

    我也尝试过:

    string stringsource = "./My Folder";
    string all = @""+stringsource + " " + stringdestination + "  / e / h / c / I";
    

    我也尝试过:

     process.StartInfo.Arguments = @"./My Folder "+Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+   / e / h / c / I";
    

    我也尝试过:

     process.StartInfo.Arguments = @"'./My Folder' "+Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+   / e / h / c / I";
    

    他们都没有奏效。即使在复制期间没有错误,也没有实际复制内容。这有什么问题?

1 个答案:

答案 0 :(得分:0)

@Quantic感谢您的评论,这是解决方案的关键(或者说是线索或领导)。

有效的是:

string all = @"""./My Folder"" """ + Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),"My Folder") + "\"  /e /h /c /I";

导致格式化的字符串路径作为xcopy工具的输入

"./My Folder" "C:\Users\Name\AppData\My Folder" /e /h /c /I