1

我正在尝试转义 C:\Program Files 空间的序列。最初我在一个字符串中对其进行了转义

System.Diagnostics.Process.Start("XCOPY.EXE", "/E /I /Y \"" + ProgramFiles + "\\WinCon2\\*.*\" \"" + pfadauswahl + "\\Backup\\" + dt.ToString("yyyy-MM-dd") + "\\WinCon2\\\"");

由于我尝试稍微升级我的程序以摆脱无尽的字符串链,新版本看起来像:

System.Diagnostics.Process.Start("XCOPY.EXE", "/E /I /Y " + pathWinCon2 + " " + backupPathWinCon2);

在我第一次尝试时,程序文件是手动转义的

\"" + ProgramFiles + "\\WinCon2\\*.*\" \""

和字符串中的“C:\ Program Files”......

现在我想使用

Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

或者

Environment.GetEnvironmentVariable("PROGRAMFILES")

但我怎么能逃脱他们?

4

2 回答 2

1

我已经尝试过了,它按预期工作:

string s = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
string q = "Microsoft Sql Server";
string path = Path.Combine(s, q);
Process p = new Process();
p.StartInfo.FileName = "CMD.EXE";
p.StartInfo.Arguments = "/K DIR \"" + path + "\" /D /S";
p.Start();
于 2013-05-08T09:04:58.030 回答
0

这是你想要的吗?

您可以在引号中指定路径..

由于空格分隔不同的参数,因此您必须在引号中给出这些路径。

pathWinCon2 = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + @"\WinCon2\*.*\";

backupPathWinCon2 = pfadauswahl + @"\Backup\" + dt.ToString("yyyy-MM-dd") + @"\WinCon2\";

System.Diagnostics.Process.Start("XCOPY.EXE", "/E /I /Y \"" + pathWinCon2 + "\" \"" + backupPathWinCon2 + "\"");
于 2013-05-08T09:11:27.030 回答