はじめに

多量の行が表示されないように、このブログは1コンテンツしか表示されない。ブログアーカイブから、他の記事を捜してくれ。

環境作れし。
・gawk 3.1.5 for Windows をググッて入手。
・gawk.exeをpathの通ったフォルダにぶち込めし。
 (「windows パスを通す」ググッて)
 (面倒なら、C:\windowsにぶち込む)
・環境変数「awkpath」にスクリプトを保存するフォルダを設定。
 (「環境変数 設定 windows」ググッて)
 (面倒なら、C:\windowsに、紹介されているスクリプトぶち込む)

2013年10月14日月曜日

階層中の空フォルダ削除 Awk Script

かなり昔に作ったヤシだ。

階層ディレクトリの一覧をテンポラリファイルに書き出し、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コマンドを発行すると標準出力、標準エラー出力の混成がスクリーンに表示されるが、エラー表示を排除するときに使用される。

delblnk.bat


delblnk.awk

0 件のコメント:

コメントを投稿