2010-11-22 6 views
2

私は2つのディレクトリ、セットファイルリストを持つfolder1、および同じセットファイルリストを持つより多くのファイルを持つfolder2を持っています。私はfolder2の "他のファイル"を取得する必要があります
ディレクトリの違いを返すためにファイル比較(fc)のようなものがありますか?2つのディレクトリを比較して異なるファイルの名前を取得するためのバッチファイル

EDIT私は現在、dirを使用して2つのリストを作成してからファイルを比較しています。今すぐファイル名のみを含むようにfcの出力を解析する必要があります。

fc /a "C:\whatever\text1.txt" "C:\whatever\text2.txt" >> "C:\whatever\differences.txt" 
+0

私には何も知られておらず、グーグルグーグルではあまり気にしませんでしたが、C#、JAVAなどを使用して独自のコンソールアプリケーションを作成し、バッチプログラムから呼び出すことができます。それはおそらく私がやることです。 – dcp

+0

ええ、私はC言語でそれを行うことができると知っていますが、すでにバッチ物を書いています。 –

+0

私はバッチ言語で回答しました(回答を参照)* dirc.batと呼ばれることを忘れてしまいました*あなたは[windows](http://en.wikipedia)を使っているので、vbscriptやjscriptを利用できませんか? .org/wiki/Windows_Script_Host#Version_history)タグ? – frayser

答えて

2

まず、両方のフォルダでdir /sを実行します。次に、fc /aを使用して結果を比較します。

それ以上のもの(必要に応じて)では、特別なツールが必要です。たとえば、WindiffまたはWinMergeをご覧ください。

+0

この組み込みのWindowsには何も役に立ちません。 GUIのインタラクティブなプログラムを使用することができれば、たくさんありますが、私はTotal Commanderの高度に構成可能な「同期する」機能が大好きです。コマンドラインで実行する必要がある場合は、wwoudでcwrsyncを使用します。実際に同期させずに差分のみを表示したい場合は、--dry-runと--verboseスイッチを使用してcwrsyncを実行します。 – mivk

5

バッチファイル

@echo off 
if "%2" == "" GOTO Usage 

cd /D %1 
if errorlevel 1 goto usage 

for %%x in (*.*) do if NOT exist %2\%%x echo missing %2\%%x 
cd /D %2 
for %%x in (*.*) do if NOT exist %1\%%x echo missing %1\%%x 

goto end 

:usage 
echo Usage %0 dir1 dir2 
echo where dir1 and dir2 are full paths 
:end 

使用

環境:

F:\so>dir /s dir1 dir2 
Volume in drive F is WIN2K 
Volume Serial Number is 921E-EC47 

Directory of F:\so\dir1 

2010-11-22 10:33  <DIR>   . 
2010-11-22 10:33  <DIR>   .. 
2010-11-22 10:33     13 a 
2010-11-22 10:33     13 b 
2010-11-22 10:33     13 c 
       3 File(s)    39 bytes 

Directory of F:\so\dir2 

2010-11-22 10:33  <DIR>   . 
2010-11-22 10:33  <DIR>   .. 
2010-11-22 10:33     13 a 
2010-11-22 10:33     13 b 
2010-11-22 10:33     13 c 
2010-11-22 10:33     13 D 
2010-11-22 10:33     13 E 
       5 File(s)    65 bytes 

    Total Files Listed: 
       5 File(s)    65 bytes 
       2 Dir(s)  219,848,704 bytes free 

F:\so> 

実行:

F:\so\dir1>dirc f:\so\dir1 f:\so\dir2 

F:\so\dir1>dirc f:\so\dir1 f:\so\dir2 
missing f:\so\dir1\D 
missing f:\so\dir1\E 

F:\so\dir2> 
+0

非常にクールな解決策ですが、私はこれをどのように拡大できるか知りたいと思います。私はdir1のディレクトリとサブディレクトリにあるすべてのファイルを見つけて、そのファイルがdir2のディレクトリ/サブディレクトリにも存在するかどうかを調べたいと思います。 – AquaAlex

関連する問題