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 に答える