2012/02/08

2012/02/08

日記(ディレクトリを監視して新しいファイルにコマンドを実行する)

思いついたことがあったので仕事終わってからC#でちょっと作ってみた。unix/linuxならcronとshell scriptでサクっと作れるようなものをwindowsでもやってみました的な。
  • 監視先ディレクトリを登録する
  • 新しいファイルを引数にして実行するコマンドを登録する
  • 常駐して監視する
  • 監視先に新しいファイルが入ってきたら、そのファイルを引数にコマンドを実行する
というのを作ってみた。

C#だと ってのがあって、すごく手軽に作れた。私のようなゆとりプログラマにはまじでうってつけ。C#すげー。C#はすげーけどwindowsが・・・。

取りあえずC#でexcel2pdfというコマンドを作って登録して動かしてみた。監視先にExcelファイルを置くと即PDFに変換されてウケたw
登録するコマンドによっては面白いことできそうで楽しみ。・・・といいつつ思いつかない。

これもちょっと似てるかも。

追記

hookという言葉が思い浮かんでいればもっと簡単に説明できたんじゃ・・・

Effective C# 4.0

2012/02/07

C#でExcel2007からPDFに変換する

Excel 2007ってPDFとして保存する機能があるんですって。すげー!という気もするけど今更かよという気も。で、C#からもPDFに変換できる。 全てのシートを印刷するってのをやってみたけど、デカいExcelをPDFに変換するときに「発行中」ってプログレスが出るのはどうにかならんのか。
それとExcelファイルによってはわけのわからない状態になることが・・・。というのは、まだ調べてるとこだけど削除済みのシートまでPDFに変換されているような・・・。

取りあえず以上。関連はこのへん。
調べたけど、ExcelViewerじゃーPDFに変換はできないっぽい。そもそも保存ができない。(Excel 2007は保存時にPDFで保存するかどうか選べる)

追記

それとExcelファイルによってはわけのわからない状態になることが・・・。というのは、まだ調べてるとこだけど削除済みのシートまでPDFに変換されているような・・・。
非表示になってるシートもPDFとして化されてたからだった。



C#でBullZipを使ってPDFを結合する

これの続きみたいなもん。 BullZip PDF PrinterのPdfUtilのMergeメソッドで結合できる。ただし、 が必要。pdftk.exeとlibiconv2.dllをpathの通ったとこに置く。もちろんpdftkは単体でも動く。



shell script自身のプロセスIDを取得する

$ echo "$$"
2714
$ sh
$ echo "$$"
2715
$ exit
$ echo "$$"
2714
$ : > temp/"$$".txt
$ cat temp/"$$".txt
$ echo 'hello' > temp/"$$".txt
$ cat temp/"$$".txt
hello
$ 


入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

直前のコマンドの終了ステータスを取得する

直前のコマンドの終了ステータスは$?で参照できるんですね。
$ echo 'hello'
hello
$ echo "$?"
0
$ cd ...
cd: 3: can't cd to ...
$ echo "$?" 
2
$ 


入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界

nullコマンド(shell)

これnullコマンドって言うんですって?
$ :
例えば
$ : > hoge
$ cat /dev/null > hoge
と同じだそうで?しかし、:は常に真を返すそうで?
 $ while : ; do ; echo 'hoge' ; done ;
とかやるとえらいことに。

入門UNIXシェルプログラミング―シェルの基礎から学ぶUNIXの世界