1 用Process.Start("cmd.exe")启动DOS窗口后,窗口显示
C:\Documents and Settings\public>2 此时输入命令d:,按回车进入d盘,如下
C:\Documents and Settings\public>d: --回车
D:\>3 输入文件的全路径,按回车执行ruby脚本文件,如下
D:\>Debug\20081221.rb --rb为ruby语言脚本请问如何在启动的进程Process中操控这些命令?或是写一个.bat文件,把命令写在里面执行?不太懂bat,只是这么猜测。呵呵。因为ruby文件只能从自己所在的根目录启动,所以必须先进入d盘,如果写成(如下)
C:\Documents and Settings\public>D:\>Debug\20081221.rb
这样执行不了。请问各位如何操控dos命令,以便找到目录下想要的文件并回车执行?谢谢!
C:\Documents and Settings\public>2 此时输入命令d:,按回车进入d盘,如下
C:\Documents and Settings\public>d: --回车
D:\>3 输入文件的全路径,按回车执行ruby脚本文件,如下
D:\>Debug\20081221.rb --rb为ruby语言脚本请问如何在启动的进程Process中操控这些命令?或是写一个.bat文件,把命令写在里面执行?不太懂bat,只是这么猜测。呵呵。因为ruby文件只能从自己所在的根目录启动,所以必须先进入d盘,如果写成(如下)
C:\Documents and Settings\public>D:\>Debug\20081221.rb
这样执行不了。请问各位如何操控dos命令,以便找到目录下想要的文件并回车执行?谢谢!
d:
cd debug
20081221.rb
[/code]
把以上代码保存在一个txt文件中,然后将文件改名成bat扩展名就可以了
p.StartInfo.FileName = "cmd";
p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
p.StartInfo.Arguments = "d:&&cd debug&&20081221.rb";
p.Start();
顶了.
.bat是批处理文件,楼主要写的话找找这方面的资料,批处理其实很简单的,放心
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true; process.Start();
process.StandardInput.WriteLine("");
process.StandardInput.WriteLine("");
process.StandardInput.WriteLine("");
process.StandardInput.WriteLine("exit");
process.Close();
但是这样产生一个问题,每次执行都要先生成一个bat文件,然后判断执行完毕再删掉这个bat文件。想用阿飞(3楼)与人生如梦(6楼)的方法,直接在代码中设置,cmd没有启动。请问这是怎么回事?谢谢。
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true; process.Start();
process.StandardInput.WriteLine("d:");
process.StandardInput.WriteLine("cd debug");
process.StandardInput.WriteLine("20081221.rb");
process.StandardInput.WriteLine("exit");
process.Close();
{
bat.WriteLine(@"@echo off");
bat.WriteLine(Application.StartupPath.Substring(0, 1) + ":");
bat.WriteLine(@"cd\");
bat.WriteLine("cd " + Application.StartupPath); bat.WriteLine(@"if not exist " + oldFile + " goto loop11"); // 循环
bat.WriteLine(@":loop1");
bat.WriteLine(@"attrib -a -r -s -h " + oldFile);
bat.WriteLine(@"del " + oldFile);
bat.WriteLine(@"if exist " + oldFile + " goto loop1"); // 循环
bat.WriteLine(@":loop11");
bat.WriteLine(@"ren " + newFile + " " + oldFileTVars.jdbb_Filename); // 将升级的程序文件更名 bat.WriteLine(@"del %0"); // 删除批处理自身
}ProcessStartInfo info = new ProcessStartInfo(batFile); // 启动自删除批处理文件
info.WindowStyle = ProcessWindowStyle.Hidden;
Process.Start(info);Environment.Exit(0); // 强制关闭当前进程
上面是一个删除自己(oldFile)的批处理文件,思路:建立一个bat文件,然后运行