.net 在进程中传递引号。开始参数

.net 在进程中传递引号。开始参数,.net,batch-file,.net,Batch File,在.NET中,我正在运行这条线路 var p = Process.Start(@"cmd", @"/C mklink /H c:\z\b c:\z\a\"); 这一切都很好,但我担心,如果两个参数之一的mklink有一个空间,这将无法正常工作。因此,我在这两个参数周围都添加了“”。执行这一行不再有效,当我写\''时,它仍然不起作用 执行cmd/C时,如何写引号 string sourcePath = @"c:\z\b"; string targetPath = @"c:\z\a"; stri

在.NET中,我正在运行这条线路

var p = Process.Start(@"cmd", @"/C mklink /H c:\z\b c:\z\a\");
这一切都很好,但我担心,如果两个参数之一的mklink有一个空间,这将无法正常工作。因此,我在这两个参数周围都添加了“”。执行这一行不再有效,当我写\''时,它仍然不起作用

执行
cmd/C
时,如何写引号

string sourcePath = @"c:\z\b";
string targetPath = @"c:\z\a";

string arguments = string.Format("\"{0}\" \"{1}\"", sourcePath, targetPath);

var p = Process.Start("cmd", "/C mklink /H " + arguments);
工作示例:

string sourcePath = @"c:\documents and settings\harvey robert\My Documents\Test.txt";
string targetPath = @"c:\test";

string s = string.Format("\"{0}\" \"{1}\"", sourcePath, targetPath);
Process.Start("cmd", @"/c copy " + s);

1个文件被复制。

啊哈,很有趣,在实现了这一点之后,数据库中的第一个条目有一个空格(文件夹名称)。您可能想用引号括住整个mklink命令(及其参数),然后还有单独的路径(根据需要转义和双转义)。@Istrudy:我不太清楚您的意思。我不知道该逃避什么,除了罗伯茨目前的答案似乎对梅不起作用。我没有试过,但它看起来不正确。我写了@“/C mklink/H”“{0}”“{1}”“,得到了一个不正确的语法错误,你写的那行行不通;@符号禁用\转义。请尝试
var p=Process.Start(@“cmd”,@“/C mklink/H”+“\+@”C:\z\b“+”\”+“\+@”C:\z\a\+“\”)我为什么要这样写<代码>\“
就是
当它在一个带有
@
前缀的字符串中时,你没有试过吗?:(试一下……它很干净,没有多个引号在一起,我的头不会爆炸。这不是你要我做的吗?
var args=string.Format(@/C mklink/H“{0}”{1}”“,newfn,target);
但您似乎建议使用“text\”而不是像我现在这样添加引号