进程类db2cmd c#

时间:2013-12-07 15:28:52

标签: c# batch-file db2 processstartinfo

我的程序需要运行" .BAT" IBM DB2中的文件(db2cmd.exe)。并将该控制台的内容记录到一个字符串中,我应该可以格式化。

现状是: 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;

2 个答案:

答案 0 :(得分:0)

默认情况下,

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

答案 1 :(得分:0)

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

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