Compare.bat (kahden kansion vertailu)

Viestiketju Windows -ongelmat -osiossa. Ketjun avasi manciteh 15.07.2008.

  1. manciteh

    manciteh Member

    Liittynyt:
    04.07.2008
    Viestejä:
    7
    Kiitokset:
    0
    Pisteet:
    11
    Mulla olisi pieni ongelma. Olen yrittänyt tehdä skriptiä, joka aluksi poistaa compare.log ja missing.log tiedostot jos niitä löytyy c-aseman juuresta. Se toimii ihan ok. Mutta sitten itse ongelma. Yritän verratta kahta eri kansiota keskenään ja jos niiden sisältö (alikansiot mukaanlukien) on sama syntyy c-aseman juureen compare.log ja mikäli kansioissa taas on poikkeavuuksia, missing.log. On oikeastaan aivan sama tuleeko noihin .log filuihin mitään tekstiä sisään kunhan vaan tuo äskeinen vertailu ja .log- tiedostojen luonti sitten toimii. Osaisiko siis joku auttaa minua asiassa alla olevan skriptin pohjalta? :)

    @echo off
    setLocal EnableDelayedExpansion

    if exist c:\compare.log del c:\compare.log
    if exist c:\missing.log del c:\missing.log
    for /f "delims=" %%G in ('dir/b/s c:\testi2\') do (
    if exist "c:\testi2\%%G" (
    fc "c:\testi2\%%G" "c:\testi\%%G" >> c:\compare.log
    )
    else (
    echo %%G is missing >> c:\missing.log
    )
    )
     
  2.  
  3. manciteh

    manciteh Member

    Liittynyt:
    04.07.2008
    Viestejä:
    7
    Kiitokset:
    0
    Pisteet:
    11
    nyt olen päässyt tähän tilanteeseen mutta ei toimi vielä niin kuin pitäisi... osaisiko joku auttaa? vai olisiko helpompi tehdä esim. vain dir -vertailu...?

    @echo
    setlocal

    set dirA=\\wscrfi0148\c$\testi
    set dirB=c:\testi2

    for /R "%dira%" %%G in (*.pdf) do call :_process "%%G"
    goto :eof

    :_process
    set relpath=%~1
    call set relpath=%%relpath:%dira%=%%
    if exist "%dirb%%relpath%" (
    echo ok) else (
    echo %~n1%~x1 exist only in %~d1%~p1 >> missing.log
    )
    goto :eof


     

Jaa tämä sivu