1

我目前有一个包含这一行的批处理文件:

"C:\Program Files (x86)\Java\jre7\bin\java" -Xmx1224m -classpath .\xalan.jar 
org.apache.xalan.xslt.Process -IN  FileIn.xml -XSL FileConvert.xslt -OUT FileOut.xml

它需要一个给定的xml和一个给定的xslt并吐出一个新的,转换的xml。批处理运行得很好,但我正在尝试将其翻译成C#这样,以便我可以围绕它构建一个应用程序并能够更改一些参数,例如要选择哪些输入文件。

我的代码是这样的,

ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", 
        "/k " + "\"C:\\Program Files (x86)\\Java\\jre7\\bin\\java\" -Xmx1224m -classpath .\xalan.jar org.apache.xalan.xslt.Process -IN  In.xml -XSL Convert.xslt -OUT Out.xml");
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();

认为它会像一个简单的CMD命令一样运行。当我这样做时,我只会收到一条消息,其中包含您可以使用的 Java 命令列表,然后它就退出了。我尝试了一些使用引号的变体,诸如此类@"C:\...

有任何想法吗?

4

1 回答 1

1

试试下面的方法,它会帮助你...

string commandLine = "-Xmx1224m -classpath .\xalan.jar org.apache.xalan.xslt.Process -IN  In.xml -XSL Convert.xslt -OUT Out.xml";
System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo(commandLine);
procStartInfo.WorkingDirectory = @"C:\Program Files (x86)\Java\jre7\bin\java";
procStartInfo.RedirectStandardOutput = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.Start();
string result = proc.StandardOutput.ReadToEnd();
Console.WriteLine(result);
于 2013-04-12T15:03:31.153 回答