Назад | Перейти на главную страницу

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

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

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