人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です。AとBというフォルダが2つあります。Aには画像が3000枚、Bには画像が4000枚入っています。Bの4000枚のうち3000枚はAの3000枚と同じものです。画像の名称もおなじです。違う点はBの方の画像は圧縮かかっていない状態でAの方は最高圧縮がかかっている点です。ここでBのAにはない画像(残りの1000枚)を削除したいのですがなにか便利な方法はないでしょうか?

●質問者: kuzeyuki
●カテゴリ:コンピュータ 学習・教育
✍キーワード:フォルダ 名称 画像
○ 状態 :終了
└ 回答数 : 13/13件

▽最新の回答へ

1 ● うるるん
●5ポイント

http://www.hatena.ne.jp/awindow?qid=1130660551#DUMMY

A=Bで且つBの中からAに含まれない画像を削除したいのであるならば


Bのフォルダを削除。

AをBという名称で複製>解凍など


これがもっとも簡単だと思われます。


Bの画像からAに含まれない画像を抜き出すという作業なら別ですが…

◎質問者からの返答

説明不足でした。今回の場合の圧縮とはフォルダに圧縮がかかっているのではなくフォルダの中の画像にJPEGで画質を落としたものと落としていないものという意味です。


2 ● aska186
●13ポイント

http://ykr414.com/dos/

コマンドプロンプトを使ってみよう!

こういう場合にはコマンドプロンプトが使えると便利です。

http://www.vector.co.jp/soft/dos/util/se044213.html

UNIQ(MS-DOS / ユーティリティ)

http://www.vector.co.jp/soft/win95/util/se015007.html

gawk win32(Windows95/98/Me / ユーティリティ)

1.Aのフォルダで

> dir /b *.* > list

として、ファイル名の一覧を出力する。

2.このlist をBのフォルダに移動させて

> dir /b *.* >> list

とすると、Bフォルダのファイル名が追記される。

3.listファイルをソートし、重複行を削除する。

> sort list | uniq | gawk ”{print ¥”del¥”,$1}” > list.bat

*uniq, gawk はそれぞれ上記のフリーソフト

*”や¥は半角で入力

4.バッチファイルlist.bat を実行する。

> list.bat

5.ファイル list, list.bat は削除。

これで完了です。

http://nomal.que.ne.jp/kohi/freesoft.shtml

???[???[???[??

という作業を自動でやってくれるフリーソフトは沢山ありそうです。

◎質問者からの返答

ありがとうございます。参考にさせていただきます。


3 ● takosan
●13ポイント

http://winfaq.jp/

Windows.FAQ - ウィンドウズ処方箋

画像の名称=ファイル名ということでいきます。OSはWin2K/XPという仮定です。

コマンドプロンプトを開いてフォルダBに移動します。コマンドラインに以下のコマンドを入れます。


X:¥hoge¥フォルダB¥>for %I in (*.*) do if not exist フォルダA¥%~nxI do del %I


試しに2つか3つファイルを置いたテスト用フォルダを使ってテストしてみてください。

for コマンドの詳細はコマンドプロンプトから for /?で表示されます。


基本構文は以下のようなものです。

FOR %変数 IN (セット) DO コマンド [コマンドパラメータ]

◎質問者からの返答

ありがとうございます。挑戦してみます。


4 ● F.Ko-Ji
●13ポイント

http://www.tohoho-web.com/wwwperl.htm

とほほのperl入門

Perlが使えるなら以下のソースで可能。


#!/usr/local/bin/perl

$dir_a = ”フォルダAのパス”;

$dir_b = ”フォルダBのパス”;

my %file_a;

opendir(DIR, $dir_a);

while(my $file = readdir(DIR)) {

next if ($file eq ’.’ || $file eq ’..’);

$file_a{$file} = 1;

}

close(DIR);

opendir(DIR, $dir_b);

while (my $file = readdir(DIR)) {

unlink($dir_b.’/’.$file) if ($file_a{$file} != 1);

}

closedir(DIR);

◎質問者からの返答

ありがとうございます。


5 ● TransFreeBSD
●13ポイント

http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/xcopy....

Windows????????????xcopy??

すみません。手元で検証できないので幾らか憶測が入っています。


1.以下の操作で一旦Aフォルダの内容が消えます。操作ミスした時のためにも、まず両フォルダをバックアップしてください。

2.コマンドプロンプト(正確な名称を忘れました。スタートメニューのアクセサリに入っていたと思います)を立ち上げてください。

3.「xcopy /u 」と打ちます。リターンキーはまだ押さないでください。最後にスペースが要ります。

4.フォルダBをコマンドプロンプトにドラッグ&ドロップします。

5.コマンドプロンプトにスペースを入れます。

6.フォルダAをコマンドプロンプトにドラッグ&ドロップします。

7.コマンドプロンプトに「xcopy /u ”フォルダBのパス” ”フォルダAのパス”」と入力されている事を確認します。

8.リターンキーを押します。


これでフォルダAにフォルダBの該当するファイルのみがコピーされていると思います。確認してください。

あとはフォルダBを消してフォルダAの名前を変えたあと、バックアップからフォルダAを戻してください。


Win2kまではこれが使えたと思います。WinXPは使った事がないのでわかりませんが、たぶん大丈夫です。

◎質問者からの返答

丁寧にありがとうございます。もう少し募集します。


1-5件表示/13件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ