[前の記事]« Win2000:ファイルのサイズをバイト数で知るには
[次の記事]文字列を置換し、あとで置換前の文字列に直すバッチ処理 »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「こんなことは可能ですか?」索引へ

多数のファイルを1つずつ「同じ名前.LZH」に圧縮するには


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さんのを参考にさせていただきます。

また、なにかありましたら、宜しくお願いします。
返事が遅くなりましてすみません。
 
 


カテゴリー「こんなことは可能ですか?」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2003年07月08日 00:58に投稿されたエントリーのページです。

ひとつ前の投稿は「Win2000:ファイルのサイズをバイト数で知るには」です。

次の投稿は「文字列を置換し、あとで置換前の文字列に直すバッチ処理」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート