为什么这段代码有效?这些引用对我来说没有意义。

时间:2017-11-22 00:26:17

标签: c# cmd command

如果我删除第一行中的第二个引用,它就不起作用。

  string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\" + user;
            var psi = new System.Diagnostics.ProcessStartInfo("cmd.exe")
            {
                Arguments = command,
                UseShellExecute = false,
                CreateNoWindow = true
            };

            using (var process = System.Diagnostics.Process.Start(psi))
            {
                process.WaitForExit();
            }

1 个答案:

答案 0 :(得分:3)

在字符前面放置一个斜杠表示应该精确地解释下面的字符而不是编译器符号。所以

\\

成为\并且“成为”。斜杠字符串在字符串中放置引号。命令字符串有效地设置为(这是print(命令)的样子:

/C "rmdir /q /s \\hostname\c$\Users\user

假设hostname =“hostname”和user =“user”

关于这段代码的奇怪之处在于字符串中没有第二个结束引号。

我希望它应该更像:

string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\\"" + user;

将添加收盘报价。如果你想在rmdir之前删除引号,你也要删除斜杠。

请参阅https://blogs.msdn.microsoft.com/csharpfaq/2004/03/12/what-character-escape-sequences-are-available/