【问题标题】:c# - Process.StartInfo.Arguments - path with dir with spacec# - Process.StartInfo.Arguments - 带空格的 dir 路径
【发布时间】:2016-06-17 20:21:27
【问题描述】:

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

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

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

现在,我做了什么:

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

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

  3. 我有管理员权限。

现在,我有了这个代码 sn-p:

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 中,没有新的 My Folder。

我也试过了:

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";

他们都没有工作。即使在复制过程中没有错误,实际上也不会复制任何内容。请问这里有什么问题?

【问题讨论】:

  • 斜线后面的所有空格是什么意思?此外,windows 使用反斜杠作为路径分隔符。
  • 尝试添加引号。因为您使用的是@,所以您可以通过在要显示引用的任何位置添加2 个引号来实现:process.StartInfo.Arguments = @"""./My Folder"""+ ... 。如果没有@,您可以使用\ 转义它:process.StartInfo.Arguments = "\"./My Folder\""+ ...
  • 将 ./ 更改为 .\ 但仍然无法正常工作....另外,我错过了 /e .... 之间的空格 .... 再次尝试使用 ./ 和 .\ ...仍然无法正常工作
  • 在 DOS 中,如果路径中有空格,则必须将路径括在引号中。
  • 感谢你们所有人,尤其是@Quantic,他把我带到了正确的道路上,我能够找到最终的解决方案——它现在有效,下面的解决方案作为答案:)

标签: c# xcopy


【解决方案1】:

@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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 2014-09-07
    • 2018-07-10
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    相关资源
    最近更新 更多