C# 为什么这个代码有效?这些引用不';我不明白。
如果我删除第一行中的第二个引号,它将不起作用C# 为什么这个代码有效?这些引用不';我不明白。,c#,cmd,command,C#,Cmd,Command,如果我删除第一行中的第二个引号,它将不起作用 string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\" + user; var psi = new System.Diagnostics.ProcessStartInfo("cmd.exe") { Arguments = command, UseShell
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();
}
将斜杠放在字符前表示应以文字形式解释以下字符,而不是作为编译器符号。所以
\\
变成\和\“变成”。斜杠字符串在字符串中加引号。命令字符串有效地设置为(这是打印(命令)的外观:
/C "rmdir /q /s \\hostname\c$\Users\user
假设hostname=“hostname”和user=“user”
这段代码的奇怪之处在于字符串中没有第二个结束引号
我希望它应该更像:
string command = "/C \"rmdir /q /s \\\\"+ hostname + "\\c$\\Users\\\"" + user;
这将添加一个结束引号。如果要删除rmdir之前的引号,还需要删除斜杠
请参见删除引号和斜杠。这样更容易阅读,谢谢!但我仍然不明白第一种方法为什么有效。@JhonSimpson因为它不是代码中的引号,而是字符串中的引号…看看如果在我的回答中的块中打印字符串会发生什么好,不要删除它then@MickyD,请看答案看看你的评论是否合适anywhere@Saurabh如果你太傻了,以至于在一篇显然写得不好的帖子上发现了一个友好的嘲讽(在写这篇文章时,一篇有3票反对的帖子)那么你应该读一读。@MickyD亲爱的,非常感谢你,我已经读了很多遍了,它没有说任何地方可以盲目遵守规则。