Перенаправление ошибок обработки команд Windows

Предупреждение: я не специалист по созданию сценариев, и извините за паршивый английский.

В случае генерации CSV из запроса к базе данных я использую следующие команды.

CALL java.exe -classpath ... com.xigole.util.sql.Jisql -user dmfodbc -pf pwd.file -driver com.sybase.jdbc3.jdbc.SybDriver -cstring %constr% -c ; -input 42.sql -formatter csv -delimiter ; 2>>%LOGFILE% | CALL grep -v -e "SELECT right" -e "executing: " -e " rows affect" > %FicheiroR% 2>>%LOGFILE%

Я использую Windows-реализацию grep.

2>>%LOGFILE% в командах java и grep вызывает сообщение об ошибке, указывающее, что файл используется другим процессом.

Уродливый обходной путь, который я придумал, состоит в том, чтобы поместить ошибку перенаправления grep во временную %LOGFILE%.aux

java ... | grep ... 2>>%LOGFILE%.aux
type %LOGFILE%.aux >> % %LOGFILE%
del %LOGFILE%.aux

Какое решение лучше?

1 ответ

Я бы не стал делать это в Java, использую язык сценариев, такой как perl, powershell, vbscript (по крайней мере, с точки зрения администратора). У любого из них есть превосходные интерфейсы базы данных под окнами. Я бы предпочел PowerShell. Смотрите этот пост группы новостей MS для примера чтения из базы данных в powershell.

Другие вопросы по тегам