如何使用asp.net C#将命令提示符输出重定向到文件

本文关键字:输出 重定向 文件 命令提示符 何使用 asp net | 更新日期: 2023-09-27 18:24:45

我尝试使用Asp.Net C#将命令提示符输出重定向到一个文件。

System.Diagnostics.Process si = new System.Diagnostics.Process();
si.StartInfo.WorkingDirectory = "c:''";
si.StartInfo.UseShellExecute = false;
si.StartInfo.FileName = "cmd.exe";
si.StartInfo.Arguments = @"/c dir" +">" + @"Myval.txt";
si.StartInfo.CreateNoWindow = true;
si.StartInfo.RedirectStandardInput = true;
si.StartInfo.RedirectStandardOutput = true;
si.StartInfo.RedirectStandardError = true;
si.Start();
string output = si.StandardOutput.ReadToEnd();
Response.Write(output);
si.Close();

正在成功创建该文件,但其中不存在任何内容。即使是变量Output也不返回任何内容。帮我解决这个问题。

如何使用asp.net C#将命令提示符输出重定向到文件

更正后编辑:

我刚刚在我的机器上进行了测试,代码运行得很好。我为自己没有仔细阅读和测试而道歉。Myval.txt被创建,DIR输出被写入其中。

输出变量为空,因为您正在将DIR命令的任何输出重新路由到txt文件中,所以这是设计的。

请查看txt文件上是否有任何阻止其被覆盖的锁。除此之外,我只能猜测存在安全问题,无法运行DIR命令。

IIS7-我测试了各种方法,包括使用批处理文件,但该应用程序在桌面上不可用。我可以看到工作进程和exe在我的用户名下运行,但会话id值为零。

以下通过命令提示符对我有效:

// Start the child process.
 Process p = new Process();
 // Redirect the output stream of the child process.
 p.StartInfo.UseShellExecute = false;
 p.StartInfo.RedirectStandardOutput = true;
 p.StartInfo.FileName = "YOURBATCHFILE.bat";
 p.Start();
 // Do not wait for the child process to exit before
 // reading to the end of its redirected stream.
 // p.WaitForExit();
 // Read the output stream first and then wait.
 string output = p.StandardOutput.ReadToEnd();
 p.WaitForExit();