2016-12-25 2 views
1

私は2つのテキストファイルblacklist.txtとcomplete.txtを持っています。 バッチファイルではなくバッチファイルを使用したい。 2つのファイル間の共通線を削除します。ブラックリストファイルの の名前は、完全な.txtファイル から削除する必要がありますか?別のテキストファイルの行を削除するバッチファイル

+0

'@For/F "delims =" %Aで(black.txt)を実行(@Findstr/V/C: "%A" complete.txt> NEWFILE.TXT&コピー/ Y NEWFILE.TXT complete.txt) 'バッチでは' %% A'、プロンプトでは '%A'を使います。 –

+0

本当にありがとうコードです。 :) –

+0

blacklist.txtがユニコードで保存されていると動作しません。 ANSIで保存されている場合にのみ動作します。 @Findstr/v/C: "%A" complete.txt> newfileまた、Unicodeファイルでも動作させることができますか? –

答えて

2
findstr /v /x /g:blacklist.txt complete.txt >outfile.txt 

これはUnicodeの入力と出力を行いoutfile

+0

リテラルサーチモードを強制するために '/ L'オプションを指定することをお勧めします。 – aschipfl

+0

@aschipfl:はい、いい考えです。 – Magoo

1

生成するcompleteからblacklist内のすべてのエントリを削除する必要があります。名前をsomething.vbsとします。

Set Arg = WScript.Arguments 
set WshShell = createObject("Wscript.Shell") 
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set BlackFile = Fso.OpenTextFile(Arg(0), 1, False, -1) 
Set CompleteFile = Fso.OpenTextFile(Arg(1), 1, False, -1) 
Set OutputFile = Fso.CreateTextFile(Arg(2), True, True) 
Set Dict = CreateObject("Scripting.Dictionary") 
On Error Resume Next 
Do Until BlackFile.AtEndOfStream 
    Line=BlackFile.readline 
    Dict.Add Line, "" 
Loop 
Do Until CompleteFile.AtEndOfStream 
    Line=CompleteFile.readline 
    If Dict.Exists(Line) 
     OutputFile.Writeline Line 
    End If 
Loop 

コマンドプロンプトで使用します。

C:\folder\something.vbs black.txt complete.txt newfile.txt 
関連する問題