我正在尝试调用提供的命令行批处理工具程序。试验和错误使我ProcessStartInfo
...问题是参数需要是常数。我一直在收集要在参数中使用的路径和文件名。如何在参数中使用变量?
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "sbsmutator.exe";
startInfo.WorkingDirectory = @"C:\Program Files\Allegorithmic\Substance\\BatchTools\1.x\";
startInfo.Arguments = " specialization --input " + templatePath + " --presets-path " + resourcesPath +
" --output-name " + name +
" --output-graph-name " + RemoveSpaces(name) +
" --output-path " + sbsPath;
答案 0 :(得分:1)
你在问题中反驳自己,说明你需要使用常数但是询问如何使用变量 - 就想法而言,它们是截然相反的。一个是常数,另一个是可变的。目前,您使用文字构建输入,因此您可以轻松地将它们交换出来。
如果要将常量用于接收进程的参数,那么,例如,执行:
const string ProcessExe = "sbsmutator.exe";
const string OutputName = "--output-name";
将它们串在一起,或使用string.Format
等:
startInfo.FileName = ProcessExe;
startInfo.Arguments = string.Format("{0} {1}", OutputName, SomeOtherConstant);
等等。
使用变量会非常相似,只有将可重复使用的东西变为可能没有意义。