【发布时间】:2019-08-11 00:34:00
【问题描述】:
我想从 C# 代码打开 Windows 命令提示符,并希望从中执行包含少量命令的批处理文件。我在试用的基础上尝试了简单的“echo”和“dir”命令,但它不起作用。我既没有收到错误,也没有收到预期的输出。至少 cmd 窗口应该打开然后可以传递参数。
我尝试了两个选项 - 运行 cmd.exe 和运行批处理文件。我无法找到我在代码中犯的错误。在此先感谢您的帮助。
var baseDirectory = "~/App_Data/TestRoot";
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.UseShellExecute = false;
processStartInfo.WorkingDirectory = HttpContext.Current.Server.MapPath(baseDirectory);
processStartInfo.CreateNoWindow = false;
processStartInfo.WindowStyle = ProcessWindowStyle.Maximized;
//running cmd.exe then .bat as argument
processStartInfo.FileName = HttpContext.Current.Server.MapPath(baseDirectory + "/cmd.exe");
processStartInfo.Arguments = HttpContext.Current.Server.MapPath(baseDirectory + "/test.bat");
Process process = Process.Start(processStartInfo);
我更改了 FileName 并删除了第二个选项的 Arguments 属性,请参考下面的代码。
processStartInfo.FileName = HttpContext.Current.Server.MapPath(baseDirectory + "/test.bat");
test.bat 文件只包含一行 echo hello。当我尝试直接从 CMD 运行它并双击时,它在这两种情况下都运行良好。只有在从 C# 代码调用它的情况下,我才会遇到问题。
我不会在输出流中得到任何结果。该批处理文件将在后台运行一个进程,该进程不会在流中返回任何输出。这不是重复的问题。请停止将此标记为重复。
【问题讨论】:
-
我不会在输出流中得到任何结果。该批处理文件将在后台运行一个进程,该进程不会在流中返回任何输出。这不是重复的问题。
-
@Sentry 我没有从“如何执行..”问题中的指定代码获得预期的输出。这不是重复的问题。
-
@vdwwd 我没有从“如何执行..”问题中的指定代码中获得预期的输出。这不是重复的问题。
-
@vikscool 我已经检查了您分享的链接。但它的不同问题。谢谢。
标签: batch-file cmd