2

我试图将命令提示符输出重定向到使用 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也不返回任何内容。帮我解决这个问题。

4

3 回答 3

1

更正后编辑:

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

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

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

于 2013-07-25T06:57:06.893 回答
0

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

于 2014-05-27T10:11:39.840 回答
0

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

// 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();
于 2014-05-27T10:20:15.303 回答