单击链接按钮时运行“ping”命令

时间:2015-12-08 16:19:35

标签: c# asp.net command-line

我正在尝试弹出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();
}

当我单击该链接时,它会打开命令提示符但不显示或执行该命令,它只显示当前目录。不知道我在这里缺少什么。

它是网页的一部分,如果这会产生影响。

3 个答案:

答案 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前的空格。