|
379) フォルダ内の複数ファイルを引数に渡して処理をしたい ぽんた 2003/07/08(火) 00:33 |
|
はじめまして。今回初めて書きます。 早速ですが、以下のことをバッチでしようとしています。 OSはNTです。 1.フォルダ内の複数あるファイルのファイル名を一つずつ変数にセットする。 2.圧縮コマンド(フリーソフトツール)にその変数を、引数としてあたえる。 3.フォルダ内のファイルがすべてなくなるまで繰り返す。 ※一度にまとめて圧縮したくないのは、相当なでかいサイズになるためいざ、1つのファイルだけを解凍したいときは丸ごと解凍しないといけないからです。 上記を実現するためのアドバイスをお願いします。 |
|
380) Re:フォルダ内の複数ファイルを引数に渡して処理をしたい ふぇむ 2003/07/08(火) 11:53 |
|
「あるディレクトリ以下(サブディレクトリまで含めて)全てのファイルを個別に圧縮する」ということなら、gzip を使って、その最上位のディレクトリを gzip -r 最上位ディレクトリ と実行すると、各ファイルがその位置のまま gzip で圧縮されると思います。ファイルの移動等不要で一番簡単なのではないでしょうか。 コマンドラインの LHA (LHA32.exe等)を使うなら、ディレクトリ構造のコピーとかそれを行なわないならファイル名の重複を防ぎかつ元の構造情報を保存するための機構が面倒そうですね。しかもNT....。 圧縮にはフリーソフトを使うというわけならオリジナルのバッチコマンドだけで閉じるわけではないので、いっそWindows Scripting Hostとかrubyとかなんか別の言語で書くほうがいいような...。 |
|
381) Re:フォルダ内の複数ファイルを引数に渡して処理をしたい YanaKen 2003/07/08(火) 13:52 |
|
http://pay.nifty.com/pay/servlet/pr?i=BDKQ048560 |
|
ぽんた さん こんにちは。 >1.フォルダ内の複数あるファイルのファイル名を一つずつ変数にセットする。 文字通りの意味で捉えて汎用性を持たせようとすると、ふぇむ さんが触れてらっしゃるように、サブディレクトリはどう処理するのかとか、「ファイル名は同一で拡張子が異なるファイルが同一フォルダ内にあったらどう扱 うか」とか、だいぶ細かい部分に目配りが必要になると思います。 一面、対象となるファイルがもっと限定できる場合(たとえば、「対象は現在のフォルダ内だけでよく、また、すべて拡張子は.txtである」みたいな)がある場合、処理はだいぶ簡単になります。 FOR %%F in (*.TXT) DO LHA M %%~nF %%F ↑NT系のみです。 %%~nF 検索されたファイルの「名前」(拡張子抜き)の部分を抜き出します。 しょっちゅうそういう業務が発生するのでなければ、このスタイルを応用して複数回実行する、とかで間に合う場合もあるかもしれませんね。 YanaKen |
|
382) Re2:ありがとうございます。 ぽんた 2003/07/08(火) 21:58 |
|
YanaKenさん、ふぇむさんアドバイスありがとうございます。 既存環境ではLHAのみ使用可能なので、YanaKenさんのを参考にさせていただきます。 また、なにかありましたら、宜しくお願いします。 返事が遅くなりましてすみません。 |