【发布时间】:2016-06-17 20:21:27
【问题描述】:
我需要编写一个小型控制台程序来将一些内容复制到 AppData/Local。
作为来源,我有一个文件夹,里面有一个空格。让我们称之为“我的文件夹”。我的文件夹包含子文件夹和其他内容。
所以我有 ./MyFolder,我需要将它复制到 C:\Users\Name\AppData\Local\My Folder
现在,我做了什么:
我知道,我的文件夹存在于 ./ 中
我可以访问AppData,因为在复制之前,我需要删除一些 之前创建的旧垃圾我的文件夹。
我有管理员权限。
现在,我有了这个代码 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,他把我带到了正确的道路上,我能够找到最终的解决方案——它现在有效,下面的解决方案作为答案:)