我有命令行参数(在C#中启动):
fijiCmdText = string.Format("/C \"\"{0}\" -macro \"{1}\" \"{2}\" {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr);
其中string是用字符串构建的,唯一的问题来自第三和第四个字符串:_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\ > D:\fiji\blobimg\Output\log.txt
我真的想拥有,既没有"
也没有,也没有跟随下面的字符串。
D:\fiji\blobimg\
那么我应该如何更改命令行的参数以使其工作?
编辑:希望这是有用的信息
fijiCmdText = string.Format("/C \"{0}\"", _fijiExeFile);
将会运行,
但是
fijiCmdText = string.Format("/C \"{0}\" -macro \"{1}\" \"{2}\", _fijiExeFile, _ijmFile, _inputDir);
将不运行。我不知道为什么。很奇怪。我想我遵守所有规则,但它没有用。
答案 0 :(得分:-1)
我认为你的问题在你的第一名持有人之前是额外的\"
。
尝试:
var fijiCmdText = string.Format("/C \"{0}\" -macro \"{1}\" \"{2}\" {3} \"{4}\" {5} {6}", _fijiExeFile, _ijmFile, _inputDir, redirStr, _logFile, headlessOption, resStr);
查看this fiddle已记录的文本看起来对我来说是命令行。
/C "foo" -macro "bar" "D:\fiji\blobimg\" > "D:\fiji\blobimg\log.txt" headless resStr