Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem hledani duplicitnich radku

Ahoj udelal jsem kratky batch pro hledani duplicit, problem tkvi v tom, ze se mi nevraci spravny errorlevel a nevim jak to osetrit. Poradite mi prosim ? Jinak na radkach budou adresarove cesty windows, ktere zacinaji a konci uvozovkama napr.: "c:\test"

cls
set list=%1
set new=ccc.log
del /f /q %new%
echo Testabcd1 >> %new%
rem for /f "tokens=1 delims=?" %%a in (%list%) do (echo %%a >> %new%1)
for /f "tokens=1 delims=?" %%a in (%list%) do (
findstr /i %%a %new%
if %errorlevel%==1 echo %%a >> %new%)

Předmět Autor Datum
Nezkoušel jsem: :: "Search for duplicate lines" :: www.petri.co.il/forums/showthread.php?t=32793 ::…
host 25.07.2012 21:29
host
Bohužel tohle mi nefunguje. Přikládám typ souboru, jehož obsah chci čistit.
martimb 26.07.2012 07:23
martimb
tak to oddebuguj tak, že budeš vypisovat errorlevel, abys věděl, že tam není problém např. s tím slo… poslední
touchwood 26.07.2012 08:05
touchwood

Nezkoušel jsem:

:: "Search for duplicate lines"
:: www.petri.co.il/forums/showthread.php?t=32793
:: author: Remco Simons [NL] 2009

@echo off
Setlocal ENABLEDELAYEDEXPANSION

::# Search for duplicate lines in:
Set "TXTFile=c:\test\test.txt"

echo/%TXTFile%
echo/                  (Empy lines are not being counted!) &echo/
echo/------------------------------------------------------------------------------+

title Find duplicate lines:
Set "skipLines=,"
For /f "usebackq delims=" %%! in ("%TXTFile%") do (
  Set/a lnCnt2=0
  Set/a iCnt3=0
  Set "fndLines="
  Set "doubleLine="
  Set/a lnCnt1=!lnCnt1!+1
  Set "readline=%%!"

  For /f "usebackq delims=" %%* in ("%TXTFile%") do (
    Set/a lnCnt2=!lnCnt2!+1
    If !lnCnt1! LSS !lnCnt2! (
      Set/a "l=10000+!lnCnt2!" & Set "l=!l:~1!"
      (echo/!skipLines! |Find /v ",!l!,")>nul &&(
        Set "compareline=%%*"
        If /i "!readline!" EQU "!compareline!" (
          Set/a iCnt3=!iCnt3!+1
          Set "skipLines=!skipLines:~0,-1!,!l!,"
          Set "fndLines=!fndLines!, !l!"
          Set "doubleLine=!compareline!
        )
      )
    )
  )

  If !iCnt3! GTR 0 (
    Set "fndLines=!fndLines:~2!
    ECHO/Line !lnCnt1!:
    ECHO/"!doubleLine!"
    ECHO/, the same line was found !iCnt3! more times
    ECHO/  at the line(s^): !fndLines!
    echo/------------------------------------------------------------------------------+
  )
)

echo/&echo/Done & pause>nul

Zpět do poradny Odpovědět na původní otázku Nahoru