C# 启动命令行处理转义字符

C# 启动命令行处理转义字符,c#,string,command-line,escaping,C#,String,Command Line,Escaping,我在C中启动了命令行参数: fijiCmdText = string.Format("/C \"\"{0}\" -macro \"{1}\" \"{2}\" {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr); 其中字符串内置于字符串中,唯一的问题来自第三个和第四个字符串:_inputDir,redirStr。他们实际上是 _inputDir

我在C中启动了命令行参数:

 fijiCmdText = string.Format("/C \"\"{0}\" -macro \"{1}\" \"{2}\" {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr);
其中字符串内置于字符串中,唯一的问题来自第三个和第四个字符串:_inputDir,redirStr。他们实际上是

_inputDir = "D:\\fiji\\blobimg\\";
redirStr = ">";
_logFile = "D:\\fiji\\blobimg\\log.txt";
如果命令参数如上所示,那么脚本接收的实际_inputDir(由该命令行启动)将

D:\fiji\blobimg"
但是如果我把论点改成

 fijiCmdText = string.Format("/C \"\"{0}\" -macro \"{1}\" \"{2} {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr);
实际接收到的字符串在这里是个问题,因为第三个字符串干扰了第四个字符串,它不应该这样做

我真的很想有,既不想没有,也不想搞乱下面的字符串

D:\fiji\blobimg\
那么,我应该如何更改命令行的参数以使其工作呢

编辑:希望这是有用的信息


fijiCmdText=string.Format/C\{0}\,_fijixefile

将运行

但是


fijiCmdText=string.Format/C\{0}\-macro\{1}\\\{2}\,_-fijiExeFile,_-ijmFile,_-inputDir


不会运行。我不知道为什么。很奇怪。我想我遵守了所有的规则,但它没有起作用。

我想你的问题是在你获得第一名之前的额外问题

尝试:

查看记录的文本对我来说是一个命令行

/C "foo" -macro "bar" "D:\fiji\blobimg\" > "D:\fiji\blobimg\log.txt" headless resStr

我已经读了你的问题好几遍了,没有发现你的问题。如果我删除\,那么{3}将自动与{2}合并。{2} 应该是D:\fiji\blobimg\,但是如果我只使用\{2},那么它就会变成D:\fiji\blob\>D:\fiji\blob\Output\log.txt,即{2}+{3}。如果还不清楚,请告诉我。你不是已经问过这个问题了吗?区别在于,当{2}字符串结束时,旧线程中的解决方案起作用。但是,它是在中间,它会干扰跟随它的字符串。我真的希望有人能帮上忙,我尝试了不同的组合,并遵循了许多关于逃逸序列的信息来源,但都不起作用。应该这么难吗?这正是我第一次尝试的方式,但问题是,foo.exe不会启动,我无法解释。fijiCmdText=string.Format/C\{0}\,_fijixefile;将运行,但fijiCmdText=string.Format/C\{0}\-macro\{1}\\{2}\、fijiExeFile、ijmFile、inputDir;不会运行。我不知道为什么。非常奇怪。@NickXTsui:那你就有另一个问题了。但如果我会因为试图帮助别人而被投票否决,那么我就不会再为此烦恼了。我没有投票否决它。另一方面,我会接受你的回答,因为这个提琴工具有帮助。正是这个提琴工具帮助我看到,实际上是_inputDir在末尾有一个额外的\\,这导致了问题。
var fijiCmdText = string.Format("/C \"{0}\" -macro \"{1}\" \"{2}\" {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr);
/C "foo" -macro "bar" "D:\fiji\blobimg\" > "D:\fiji\blobimg\log.txt" headless resStr