C#运行.cmd文件
我text.cmd文件里的doc命令是:ffmpeg.exe -i e:\1.avi -s 176x144 -b 20000 -acodec amr -ab 12200 d:\2.mp4
我如果直接把命令写在doc窗口内执行能成功!!!我现在想用C#通过运行text.cmd文件来执行里面的doc命令!!帮帮忙,,我还会加分的!!!先谢谢啦 展开
一楼和二楼都是正解:
1. 一楼的System.Diagnostics.Process.Start("E:\text.cmd"); 代码意思就等于你用鼠标双击“text.cmd”这个文件;
这样简单易了,
2.二楼的写的就比较清楚拉,他是在程序中把“开始--运行---再输入cmd---再输入你的命令”这个命令执行一遍
3.我这边有个例子,就是查找局域网中所有IP地址的代码,愿意看下的话,我放下面拉,(我的form中放拉一个button和一个listBox控件,在下面标记的地方“就可以输入你自己的命令”)
private void button1_Click(object sender, EventArgs e)
{
ArrayList l= GetAllLocalMachines();
listBox1.Items.Clear();
for (int i = 0; i < l.Count; i++)
{
listBox1.Items.Add(l[i]);
}
listBox1.Dock = DockStyle.Bottom;
this.Controls.Add(listBox1);
}
static ArrayList GetAllLocalMachines()
{
Process p = new Process();
//设定程序名
p.StartInfo.FileName = "cmd.exe";
//关闭Shell的使用
p.StartInfo.UseShellExecute = false;
//重定向标准输入
p.StartInfo.RedirectStandardInput = true;
//重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
p.StartInfo.RedirectStandardError = true;
//设置不显示窗口
p.StartInfo.CreateNoWindow = true;
p.Start();
p.StandardInput.WriteLine("arp -a");//这里就可以输入你自己的命令
p.StandardInput.WriteLine("exit");
ArrayList list = new ArrayList();
StreamReader reader = p.StandardOutput;
string IPHead = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString().Substring(0, 3);
for (string line = reader.ReadLine(); line != null; line = reader.ReadLine())
{
line = line.Trim();
if (line.StartsWith(IPHead) && (line.IndexOf("dynamic") != -1))
{
string IP = line.Substring(0, 15).Trim();
string Mac = line.Substring(line.IndexOf("-") - 2, 0x11).Trim();
LocalMachine localMachine = new LocalMachine();
localMachine.MachineIP = IP;
localMachine.MachineMAC = Mac;
localMachine.MachineName = "";
list.Add(IP);
}
}
return list;
}
效果如下: 不知道这样对你有没有帮助~~
只有一句,就读出来存着吧。
接下来如下:
1.使用Process类,来创建独立的进程,导入System.Diagnostics,
using System.Diagnostics;
2.实例一个Process类,启动一个独立进程
Process p = new Process();
3.Process类有一个StartInfo属性,这个是ProcessStartInfo类,包括了一些属性和方法,下面用到了他的几个属性:
设定程序名
p.StartInfo.FileName = "cmd.exe";
关闭Shell的使用
p.StartInfo.UseShellExecute = false;
重定向标准输入
p.StartInfo.RedirectStandardInput = true;
重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
重定向错误输出
p.StartInfo.RedirectStandardError = true;
设置不显示窗口
p.StartInfo.CreateNoWindow = true;
上面几个属性的设置是比较关键的一步。
4.都设置好了启动进程吧
p.Start();
5.输入要执行的命令
p.StandardInput.WriteLine("/*指令*/");
p.StandardInput.WriteLine("exit");
6.从输出流获取命令执行结果,
string strRst = p.StandardOutput.ReadToEnd();
例如:[C:\Windows]System.Diagnostics.Process.Start("explorer", "/n, C:\\Windows");
打开[我的电脑]
System.Diagnostics.Process.Start("explorer","/n,/select, C:\");
打开文本文件, 例如
:[C:\test.txt]System.Diagnostics.Process.Start("explorer", "/n, C:\\test.txt");
打开应用程序, 例如:计算器
System.Diagnostics.Process.Start("C:\\Windows\\system32\\calc.exe");
关机命令
System.Diagnostics.Process.Start("cmd.exe","/cshutdown -s -t 1000");
远程关机
要远程关机得满足3个条件
第一 组策略里允许了 远程网络强制关机
第二 防火墙要关了
第三 GUEST这个帐户要开启
void shutdown()
{
Process commandProcess = new Process();
try
{
commandProcess.StartInfo.FileName = "cmd.exe";
commandProcess.StartInfo.UseShellExecute = false;
commandProcess.StartInfo.CreateNoWindow = true;
commandProcess.StartInfo.RedirectStandardError = true;
commandProcess.StartInfo.RedirectStandardInput = true;
commandProcess.StartInfo.RedirectStandardOutput = true;
commandProcess.Start();
commandProcess.StandardInput.WriteLine("shutdown /r /m 127.0.0.1 /t 200 /f");
commandProcess.StandardInput.WriteLine("exit");
for (; !commandProcess.HasExited; )//等待cmd命令运行完毕
{
System.Threading.Thread.Sleep(1);
}
//错误输出
string tmpout = commandProcess.StandardError.ReadToEnd();
string tmpout1 = commandProcess.StandardOutput.ReadToEnd();
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
finally
{
if (commandProcess != null)
{
commandProcess.Dispose();
commandProcess = null;
}
}
}
使用C#调用cmd.exe执行shutdown.exe命令就行。
Shutdown使您能够一次关闭或重新启动一台本地或远程计算机。