- 情報源
- 試行錯誤
- 前々からこれをやりたかったのですが、Windowsのソフトをさがしてもそういう機能は見つからず、かといってコマンドラインで処理できるわけではなく諦めていたのですが、偶然UnxUitlsを発見したのでもしかしたらと思って試してみました。
- UnxUtilsのsh.exe上で下記のコマンドラインを打てば、一応希望通りの動作はするのですが、日本語ファイル名になったとたんにとんでもない状態に陥ってしまった。そのうち誤爆しそうなので、本番投入は出来ません。orz
e:/bin/UnxUtils/usr/local/wbin/find.exe . -type f -name '*.zip' ! \( -exec unzip -qq -P PASSWORD -t {} \; \) -print0 | xargs -r -0 rm
-
- はまりどころ
- C:\WINNT\system32\find.exeにもfind.exeが存在したこと。環境変数で定義したパスよりもこちらが先に検索されるので、絶対パスでfind.exeを指定しないとどうやっても動きません。
- findと組み合わせてunzipに-Pオプションでパスワードを渡すとき、ダブルクォートで囲むとエラーになる。クォートせずに文字列を描いたらうまくいったのですが、これだとから文字をパスワードとして送り込めないんじゃ。
- 出来合のソフトで頑張るより、Perl + File::Find + Archive::Zipあたりでスクリプトを書いてしまった方が幸せになりそうだ。