问题描述
用C#写了个小程序,最后会生成一个批处理文件,想法是逐行执行下列代码:telnet192.168.0.206cdmnt/nandtftp-g-r61958_1.fhj192.168.0.200tftp-g-r61958_1.ini192.168.0.200但是我现在生成的批处理,运行后只能执行第一行,之前没学过批处理的知识,有没有高手能指点一下?现在生成的批处理内容是这样的(肯定是不对的):@echoofftelnet192.168.0.206cdmnt/nandtftp-g-r61958_1.fhj192.168.0.200tftp-g-r61958_1.ini192.168.0.200pause有两个问题:1.C#无法正常运行这个.bat文件2.手动运行.bat文件之后,只能完成第一步Telnet连接,但是连接上之后不会进入目标目录和执行下载动作...求指导
解决方案
解决方案二:
引用楼主shounishino的回复:
cdmnt/nandtftp-g-r61958_1.fhj192.168.0.200tftp-g-r61958_1.ini192.168.0.200
这些都是对程序的输入,当执行telnet192.168.0.206后,如果连上了,程序是不会结束的,下面的代码也就永远不会执行。正确的做法应该是启动进程,重定向输入流,向输入流写入上面的命令,处理结束后写quit或结束该进程。
解决方案三:
批处理和telnet是两个系统拆成2个文件bat文件:telnet192.168.0.206<command.txt
command.txt:cdmnt/nandtftp-g-r61958_1.fhj192.168.0.200tftp-g-r61958_1.ini192.168.0.200
解决方案四:
引用1楼caojinrong的回复:
Quote: 引用楼主shounishino的回复:
cdmnt/nandtftp-g-r61958_1.fhj192.168.0.200tftp-g-r61958_1.ini192.168.0.200这些都是对程序的输入,当执行telnet192.168.0.206后,如果连上了,程序是不会结束的,下面的代码也就永远不会执行。正确的做法应该是启动进程,重定向输入流,向输入流写入上面的命令,处理结束后写quit或结束该进程。
昨天问别人也是这么说的,Telnet是另一个程序了,有人建议捕捉Telnet窗口,请问哪种方式比较容易实现?启动进程还是捕捉窗口?小白一枚请指教
解决方案五:
现在有进展了,最要紧的问题是生成的批处理文件用程序打开不执行telnet命令,但是双击可以正常运行,奉上生成和运行.bat的代码,各位帮我分析一下吧privatevoidcmdBatch_Click(objectsender,EventArgse){if(ListView.Items.Count!=0){stringorgbatPath=this.ListView.Items[0].SubItems[2].Text;stringbatPath=@orgbatPath+@"TelConnect.bat";if(!File.Exists(batPath)){//Createafiletowriteto.using(StreamWritersw=File.CreateText(batPath)){sw.WriteLine("@echooff");sw.WriteLine("telnet"+txtIP.Text);sw.WriteLine("pause");}}ProcessopenTelConnect=newProcess();openTelConnect.StartInfo.FileName=batPath;openTelConnect.StartInfo.Arguments="TelConnect.bat";openTelConnect.StartInfo.WorkingDirectory=orgbatPath;openTelConnect.StartInfo.UseShellExecute=false;openTelConnect.StartInfo.CreateNoWindow=false;openTelConnect.Start();}//上传文件列表stringorgPath=this.ListView.Items[0].SubItems[2].Text;stringpath=@orgPath+@"FileList.txt";if(!File.Exists(path)){//Createafiletowriteto.using(StreamWritersw=File.CreateText(path)){intiMax=ListView.Items.Count;for(inti=0;i<iMax;i++){string[]upFiles=newstring[iMax];upFiles[i]=this.ListView.Items[i].SubItems[0].Text;sw.WriteLine("tftp-g-r"+upFiles[i]+"192.168.0.200");}}}}