2

我的程序需要在 IBM DB2 (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;
4

2 回答 2

0

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

proc.StartInfo.FileName = "db2cmd.exe -i";
于 2014-11-29T19:04:04.337 回答
0

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

于 2013-12-09T22:03:00.807 回答