转载:http://iusers.com.cn/post/C-command-and-return-to-the-implementation-of-the-results-CMD
公司要求写一个用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. }