
Contents
新規書き込み(ファイル既存なら上書き)の場合
これは簡単です。例えば\set wg1 '\\w qbtmp \n \\g | find "" /v >> qbtmp & move qbtmp '
↓ 使用例。ファイルパスがそのままシェルに渡るので、適宜クォートが必要です(半角空白を含むとか、パス区切りがスラッシュの場合)。
\set wg1 '\\w qbtmp \n \\g | find "" /v >> qbtmp & move qbtmp ' select version() :wg1 "R:/test1.txt" 1 file(s) moved. select now() :wg1 "R:/test2.txt" 1 file(s) moved.


定義した変数(ここでは
- \w qbtmp
クエリ文字列を一時ファイル qbtmp に新規書き込み(qbtmp が既存なら上書き)。 - \g | find "" /v >> qbtmp
クエリを実行し、結果を qbtmp に追記。find を使うのは Windows の CMD シェル特有の事情(パイプで渡した文字列をそのままリダイレクトする普通の方法がない)。 - move qbtmp
ファイルパス クエリとレスポンスが入った qbtmp を、指定されたファイルに移す。
1.
ファイル書き込みと同時に、画面表示もする(暫定版)
本当はクエリ結果だけ表示させたいけど、簡単な方法が見つかってません。とりあえず暫定的に、書き込んだファイルをそのまま表示するもの。↓ クエリがもう一度出るのが今いち…。\set wg2 '\\w qbtmp \n \\g | find "" /v >> qbtmp & type qbtmp & move qbtmp ' select generate_series(1, 10) :wg2 "R:/test2.txt" select generate_series(1, 10) +-----------------+ | generate_series | +-----------------+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 | | 10 | +-----------------+ (10 行) 1 file(s) moved.

追記書き込み・簡易版(一時ファイルを放置)
非追記を追記に変えるには、「move\set wg3 '\\w qbtmp \n \\g | find "" /v >> qbtmp & type qbtmp & type qbtmp >>' select 1 :wg3 "R:/test3.txt" select 1 +----------+ | ?column? | +----------+ | 1 | +----------+ (1 行) select 2 :wg3 "R:/test3.txt" select 2 +----------+ | ?column? | +----------+ | 2 | +----------+ (1 行) select 3 :wg3 "R:/test3.txt" select 3 +----------+ | ?column? | +----------+ | 3 | +----------+ (1 行)

↓ 放置した一時ファイルの後始末。psql
\! dir qbtmp /b -- 一時ファイルの存在確認 \! del qbtmp -- 消す
追記書き込み・改良版(出力ファイルを別途指定)
ここまではコマンド実行時に出力ファイルを指定してきましたが、追記の場合、1\set wg4 '\\g qbtmp \n \\w | find "" /v >> %o% & type qbtmp >> %o% & type qbtmp & del qbtmp' \setenv o "R:/test4_1.txt" select 1 :wg4 +----------+ | ?column? | +----------+ | 1 | +----------+ (1 行) select 2 :wg4 +----------+ | ?column? | +----------+ | 2 | +----------+ (1 行)

変数
\setenv o "R:/test4_2.txt" select 8 :wg4 +----------+ | ?column? | +----------+ | 8 | +----------+ (1 行) select 9 :wg4 +----------+ | ?column? | +----------+ | 9 | +----------+ (1 行)

新規書き込み(既存ファイルの上書き)はできませんが、クエリ前に「\! del
昨日の色指定も追加(クエリ結果だけ別の色で表示、要 ConEmu)
せっかくなので、昨日\set wg5 '\\g qbtmp \n \\w | find "" /v >> %o% & type qbtmp >> %o% & set /p x=\x1b[38;2;%color%m
