在我的 C# 代码中
processInfo = new ProcessStartInfo("do.cmd");
processInfo.CreateNoWindow = false;
processInfo.UseShellExecute = false;
在我的 do.cmd 中我有
@echo off
set CONFIG_FILE=./some.properties
set DEFCONFIG_FILE=./more.properties
set EDA_ARGS=-config %CONFIG_FILE% -defaultconfig %DEFCONFIG_FILE%
set JAVA_ARGS=-Xmx256M
set BOOTCLASSPATH=../lib/1.jar;../lib/2.jar;../lib/3.jar;../4.jar;../5.jar
:run_erp
java -Xbootclasspath/p:%BOOTCLASSPATH% %JAVA_ARGS% -jar ../lib/RUNME.jar %EDA_ARGS%
goto end
:end
我收到无法找到 RUNME.jar 的错误,但是如果我在命令提示符下手动运行 do.cmd,它就可以正常工作。但是如果我在 c# 中创建一个进程并运行它,我会收到上面的错误。
所以我的问题是如何在 C# 中运行 cmd 相当于在 cmd 提示符中运行它?
最佳答案
我通过做三件事解决了这个问题。
更改对象创建以仅包含命令(因为我设置了工作目录)
processInfo = new ProcessStartInfo("do.cmd");
将工作目录设置为我的
do.cmd
所在位置processInfo.WorkingDirectory = Directory.GetCurrentDirectory() + $"\\somedir\\bin\\";
将
UseShellExecute
设置为true
:processInfo.UseShellExecute = true;
关于java - 创建运行java的cmd进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268808/