如何使用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
也不返回任何内容。帮我解决这个问题。
更正后编辑:
我刚刚在我的机器上进行了测试,代码运行得很好。我为自己没有仔细阅读和测试而道歉。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();