我正在尝试弹出Windows命令提示符并在单击链接按钮时运行ping命令。链接按钮看起来像:
<asp:LinkButton runat="server" ID="lbFTPIP" OnCommand="lbFTPIP_OnCommand" CommandArgumnet="1.2.3.4" Text="1.2.3.4"/>
我为OnCommand尝试了这个:
protected void lbFTPIP_OnCommand(object sender, CommandEventArgs e)
{
string sFTPIP = e.CommandArgument.ToString();
string sCmdText = @"ping -a " + sFTPIP;
Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = sCmdText;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = false;
p.Start();
}
当我单击该链接时,它会打开命令提示符但不显示或执行该命令,它只显示当前目录。不知道我在这里缺少什么。
它是网页的一部分,如果这会产生影响。
答案 0 :(得分:3)
要打开控制台并立即运行命令,您需要使用/C
或/K
开关:
// Will run the command and then close the console.
string sCmdText = @"/C ping -a " + sFTPIP;
// Will run the command and keep the console open.
string sCmdText = @"/K ping -a " + sFTPIP;
如果你想建立一个&#34;按任意键&#34;,你可以添加PAUSE
:
// Will run the command, wait for the user press a key, and then close the console.
string sCmdText = @"/C ping -a " + sFTPIP + " & PAUSE";
编辑:
最好重定向输出,然后单独显示结果:
Process p = new Process();
// No need to use the CMD processor - just call ping directly.
p.StartInfo.FileName = "ping.exe";
p.StartInfo.Arguments = "-a " + sFTPIP;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();
var output = p.StandardOutput.ReadToEnd();
// Do something the output.
答案 1 :(得分:1)
您不需要执行cmd.exe,只需执行ping.exe。
string sCmdText = @"-a " + sFTPIP;
Process p = new Process();
p.StartInfo.FileName = "ping.exe";
p.StartInfo.Arguments = sCmdText;
p.StartInfo.RedirectStandardOutput = false;
p.StartInfo.UseShellExecute = true;
p.StartInfo.CreateNoWindow = false;
p.Start();
此外,除非您打算重定向输出,否则不要设置UseShellExecute = false
,我很惊讶您没有这样做。
答案 2 :(得分:0)
首先,你有一些奇怪的地方CommandArgumnet="1.2.3.4"
拼写错误。另一件事是/ C和ping前的空格。