公司要求写一个用cmd的ftp命令上传文件的,写到一半发现一个问题,cmd的ftp命令的密码必须在界面里面输入,不能在程序里面控制。
现在需要换成用协议上传的。
把代码共享。关闭进程是网上找的。运行了cmd要需要关闭cmd进程。
- 1. private void button1_Click(object sender, EventArgs e)
- 2. {
- 3. // 调用代码
- 4. string[] cmd = new string[] { "ping 192.168.3.15 -n 1", "ping 192.168.3.16 -n 2" };
- 5. MessageBox.Show(Cmd(cmd));
- 6. CloseProcess("cmd.exe");
- 7. }
- 8.
- 9. /// <summary>
- 10. /// 运行CMD命令
- 11. /// </summary>
- 12. /// <param name="cmd">命令</param>
- 13. /// <returns></returns>
- 14. public static string Cmd(string [] cmd)
- 15. {
- 16. Process p = new Process();
- 17. p.StartInfo.FileName = "cmd.exe";
- 18. p.StartInfo.UseShellExecute = false;
- 19. p.StartInfo.RedirectStandardInput = true;
- 20. p.StartInfo.RedirectStandardOutput = true;
- 21. p.StartInfo.RedirectStandardError = true;
- 22. p.StartInfo.CreateNoWindow = true;
- 23. p.Start();
- 24. p.StandardInput.AutoFlush = true;
- 25. for (int i = 0; i < cmd.Length; i++)
- 26. {
- 27. p.StandardInput.WriteLine(cmd[i].ToString());
- 28. }
- 29. p.StandardInput.WriteLine("exit");
- 30. string strRst = p.StandardOutput.ReadToEnd();
- 31. p.WaitForExit();
- 32. p.Close();
- 33. return strRst;
- 34. }
- 35.
- 36. /// <summary>
- 37. /// 关闭进程
- 38. /// </summary>
- 39. /// <param name="ProcName">进程名称</param>
- 40. /// <returns></returns>
- 41. public static bool CloseProcess(string ProcName)
- 42. {
- 43. bool result = false;
- 44. System.Collections.ArrayList procList = new System.Collections.ArrayList();
- 45. string tempName = "";
- 46. int begpos;
- 47. int endpos;
- 48. foreach (System.Diagnostics.Process thisProc in System.Diagnostics.Process.GetProcesses())
- 49. {
- 50. tempName = thisProc.ToString();
- 51. begpos = tempName.IndexOf("(") + 1;
- 52. endpos = tempName.IndexOf(")");
- 53. tempName = tempName.Substring(begpos, endpos - begpos);
- 54. procList.Add(tempName);
- 55. if (tempName == ProcName)
- 56. {
- 57. if (!thisProc.CloseMainWindow())
- 58. thisProc.Kill(); // 当发送关闭窗口命令无效时强行结束进程
- 59. result = true;
- 60. }
- 61. }
- 62. return result;
- 63. }