かなり昔に作ったヤシだ。
階層ディレクトリの一覧をテンポラリファイルに書き出し、Awkの読み込みファイルと指定し、
その上、スクリプトの中でも別なテンポラリファイルの作成/読み込みをしている。
今書き直すなら、パイプを使うだろな。
しかし、勉強になるポイントもある。
AWKのつぼ
・通常、gawkに与えたコマンドラインパラメタはgawk実行モジュールによって解析される。
余分なパラメタを最後部に追加すると、不正な入力ファイルとして扱われる…
…が、スクリプト中でARGC(パラメタ個数を示すAWKシステム変数)を減算することで、「パラメタがなかった」事にしてのgawkのエラーを回避できる。
つまり、下記のバッチでARGV[2]は%2(delblnk.batの第二パラメタ)で、ARGCは3だが、
ARGC=2と、ARGCを強制することでgawkのエラーなしでパラメタをスクリプトに渡すことが出来る。
ここでは、実削除を行わないためのパラメタ "/n" をスクリプトで受け取っている。
バッチのつぼ
delblnk.awk中system()に渡されているバッチ文字列中の最後尾に注目。
”dir … 2>null"と書かれている。これは、dirコマンドが出力する標準エラー出力をヌルデバイスに書き込み、捨てる指定だ。
画面でdirコマンドを発行すると標準出力、標準エラー出力の混成がスクリーンに表示されるが、エラー表示を排除するときに使用される。
・通常、gawkに与えたコマンドラインパラメタはgawk実行モジュールによって解析される。
余分なパラメタを最後部に追加すると、不正な入力ファイルとして扱われる…
…が、スクリプト中でARGC(パラメタ個数を示すAWKシステム変数)を減算することで、「パラメタがなかった」事にしてのgawkのエラーを回避できる。
つまり、下記のバッチでARGV[2]は%2(delblnk.batの第二パラメタ)で、ARGCは3だが、
ARGC=2と、ARGCを強制することでgawkのエラーなしでパラメタをスクリプトに渡すことが出来る。
ここでは、実削除を行わないためのパラメタ "/n" をスクリプトで受け取っている。
バッチのつぼ
delblnk.awk中system()に渡されているバッチ文字列中の最後尾に注目。
”dir … 2>null"と書かれている。これは、dirコマンドが出力する標準エラー出力をヌルデバイスに書き込み、捨てる指定だ。
画面でdirコマンドを発行すると標準出力、標準エラー出力の混成がスクリーンに表示されるが、エラー表示を排除するときに使用される。
delblnk.bat
delblnk.awk
0 件のコメント:
コメントを投稿