2016-11-13 6 views
0

バッチスクリプトに別のバッチスクリプトを実装する必要があります。私は文字列をスキャンして "strings.txt"というテキストファイルに出力するスクリプトを持っています。そして、別のバッチスクリプトで重複した行を削除したいのです。何とか他のバッチスクリプトを実装したいと思っています。ここに私が適用する必要があるスクリプトがあります。バッチでDirコマンドのサポートが必要

@echo off 
setlocal disableDelayedExpansion 
set "file=%~1" 
set "line=%file%.line" 
set "deduped=%file%.deduped" 
::Define a variable containing a linefeed character 
set LF=^ 


::The 2 blank lines above are critical, do not remove 
>"%deduped%" (
    for /f usebackq^ eol^=^%LF%%LF%^ delims^= %%A in ("%file%") do (
    set "ln=%%A" 
    setlocal enableDelayedExpansion 
    >"%line%" (echo !ln:\=\\!) 
    >nul findstr /ilg:"%line%" "%deduped%" || (echo !ln!) 
    endlocal 
) 
) 
>nul move /y "%deduped%" "%~n1_deduped%~x1" 
2>nul del "%line%" 

これはすべて私のテキストファイルに起こる必要がありますが、このすべてまたはその変形が私のスクリプトに表示されます。

+1

をこれは何をしなければなりませんあなたの質問に書いた 'DIR'コマンドを使ってください。 – Squashman

+1

[バッチを重複する行をテキストファイルから削除する]の可能な複製(http://stackoverflow.com/questions/11689689/batch-to-remove-duplicate-rows-from-text-file) – Squashman

+0

別のバッチファイルを呼び出すバッチファイル内で 'CALL'を使用してください。 – soja

答えて

1
Set Inp = WScript.Stdin 
Set Outp = Wscript.Stdout 
Set Dict = CreateObject("Scripting.Dictionary") 
Do Until Inp.AtEndOfStream 
    On Error Resume Next 
    Line=Inp.readline 
    Dict.Add Line, "" 
Loop 
For Each thing in Dict.Keys() 
    Outp.writeline thing 
Next 

上記をテキストファイルに入れて、DeDup.vbsとしてください。

cscript //nologo "C:\folder\dedup.vbs" < "C:\folder\inputfile.txt" > "C:\folder\outputfile.txt" 

これはフィルターからで使用するには - 、並べ替え、行をフィルタリングする方法を示す19件のサブ・ルーチントリム、話す、使用クリップボード、Webページをフェッチ、ストリップタグなどhttps://onedrive.live.com/?id=root&cid=E2F0CE17A268A4FA

関連する問題