Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
进程类db2cmd c#_C#_Batch File_Db2_Processstartinfo - Fatal编程技术网

进程类db2cmd c#

进程类db2cmd c#,c#,batch-file,db2,processstartinfo,C#,Batch File,Db2,Processstartinfo,我的程序需要在IBMDB2(db2cmd.exe)中运行一个“.BAT”文件。并将控制台的内容记录到一个字符串中,我应该能够格式化该字符串 现状是: bat文件包含数据库的用户名和密码,导出为csv查询。手动执行bat文件时,效果绝对良好 问题是我无法将该控制台的详细信息捕获到字符串中 代码片段如下所示: proc.StartInfo.FileName = "db2cmd.exe"; proc.StartInfo.Arguments = @"C:\test.bat"; proc.StartInf

我的程序需要在IBMDB2(db2cmd.exe)中运行一个“.BAT”文件。并将控制台的内容记录到一个字符串中,我应该能够格式化该字符串

现状是: bat文件包含数据库的用户名和密码,导出为csv查询。手动执行bat文件时,效果绝对良好

问题是我无法将该控制台的详细信息捕获到字符串中

代码片段如下所示:

proc.StartInfo.FileName = "db2cmd.exe";
proc.StartInfo.Arguments = @"C:\test.bat";
proc.StartInfo.WorkingDirectory = @"C:\Program Files\IBM\SQLLIB\BIN\";
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;

proc.OutputDataReceived += (o, e) => s.AppendLine(e.Data);
proc.ErrorDataReceived += (o, e) => s.AppendLine(e.Data);

proc.Start();

proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();

code = proc.ExitCode;

默认情况下,
db2cmd.exe
打开一个新的命令shell。尝试使用命令开关
/i/c
在同一个shell中运行脚本。

将-i选项与db2cmd.exe一起使用应该可以解决此问题。修改程序的第一行,如下所示:

proc.StartInfo.FileName = "db2cmd.exe -i";

嗨,格兰特,s是字符串生成器。StringBuilder s=new StringBuilder()