• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Porównywanie plików w cmd.exe za pomocą .bat

Object Storage Arubacloud
0 głosów
1,237 wizyt
pytanie zadane 21 października 2016 w Systemy operacyjne, programy przez Matty Nowicjusz (150 p.)
zamknięte 21 października 2016 przez Matty

Witam, zwracam się z prośbą o pomoc w rozwiązaniu zadania bo sam już siedzę nad tym 3 godziny i nie mam pomysłu.

Udało mi się zrobić coś takiego:

 

 

@echo off
echo Witaj w porownywarce plikow. W atrybutach uruchamiania wpisz kolejno katalogi ktore chcesz porownac.
dir /s %1 > porow1.txt
dir /s %2 > porow2.txt

if porow1.txt == porow2.txt goto etykieta1
if not porow1.txt == porow2.txt goto etykieta2

:etykieta1
echo Zawartosc jest identyczna
goto koniec

:etykieta2
echo Zawartosc jest rozna
goto koniec

:koniec
echo --------------------------------
echo Koniec programu
pause

 

 

 

Jednak wynik jest zawsze "Zawartosc jest rozna" ponieważ jeden plik ma w nazwie jeden a drugi dwa po za tym to chyba nie porównuje wartości (folderow w srodku). Probowalem za pomoca komendy comp jednak ta mi nie działa, wyskakuje ze nie moze otworzyc danego katalogu. Prosze bardzo o pomoc i podpowiedzi. Uprzedzam że nie jestem zaawansowany w tym temacie ale postanowilem sie tym zainteresowac. W razie pytań odpowiem na każde. Pozdrawiam i z niecieprliwoscia czekam na odpowiedzi.

 

 

EDIT1: Udało mi się skrypt zaktualizaować do takiego momentu ze juz prawie wszystko dziala:

@echo off
echo Witaj w porownywarce plikow. Pamietj aby w atrybutach uruchamiania wpisac kolejno katalogi ktore chcesz porownac.
pause
dir /s %1 > porow1.txt 
dir /s %2 > porow2.txt

find /v /i porow1.txt "Directory" > porow3.txt
find /v /i porow2.txt "Directory" > porow4.txt

if porow3.txt == porow4.txt goto etykieta1
if not porow3.txt == porow4.txt goto etykieta2

:etykieta1
echo --------------------------------
echo Zawartosc jest identyczna.
goto koniec

:etykieta2
echo --------------------------------
echo Zawartosc jest rozna.
goto koniec

:koniec
echo --------------------------------

echo Koniec programu
pause

 

Tylko linie z if'em nie działają prawidodłowo ponieważ porownuje mi stringi tzn porow3.txt z porow4.txt a nie pliki .txt dlatego zawsze jest rozny bo 3/=4. Jak nie ifem to czym to zrobic?

komentarz zamknięcia: rozwiazanie

1 odpowiedź

+1 głos
odpowiedź 21 października 2016 przez niezalogowany
wybrane 21 października 2016 przez Matty
 
Najlepsza
Do tego służy specjalny tool: "fc"
komentarz 21 października 2016 przez Matty Nowicjusz (150 p.)
fc folder1 folder2

wyskakuje mi:

FC: cannot open FOLDER1 - No such file or directory.

 

gdy wpisuje komende jestem w folderze gdzie jest folder1 i folder2. Nie wiem dlaczego...
komentarz 21 października 2016 przez niezalogowany
Bo to służy do porównywania plików, a nie folderów (jak sama nazwa toola mówi)
komentarz 21 października 2016 przez Matty Nowicjusz (150 p.)
Zaktualizowałem mój post. Możesz zobaczyć proszę? Jak zrobić by porównało mi zawartości plikow i jesli TRUE przeniesie do etykieta1 a jesli FALSE to do etykieta2?

Ja to widze tak:

Gdy fc porow3.txt porow4.txt jest taka sama to idź do etykieta1

Gdy fc porow3.txt porow4.txt jest rozna to idz do etykieta2

Jednak nie wiem jak to ubrać w komendy..
komentarz 21 października 2016 przez niezalogowany

Gdy 2 pliki są identyczne, to output fc jest zawsze taki sam, sprawdź czy zwraca odpowiedni komunikat:

>fc .bash_profile .bash_profile
Comparing files .bash_profile and .BASH_PROFILE
FC: no differences encountered

 

komentarz 21 października 2016 przez Matty Nowicjusz (150 p.)
edycja 21 października 2016 przez Matty

Tak, FC: no differences encountered, jednak nie mam pomysłu jak to wykorzystać.

Strzelam że coś takiego jednak zawsze wychodzi errorlevel równy 1 bo pliki roznia sie nazwa..

@echo off
cls
echo Witaj w porownywarce plikow. Pamietj aby w atrybutach uruchamiania wpisac kolejno katalogi ktore chcesz porownac.
pause
dir /s %1 > porow1.txt 
dir /s %2 > porow2.txt

fc porow1.txt porow2.txt
ECHO ErrorLevel: %ERRORLEVEL%

if errorlevel 1 goto etykieta1
if errorlevel 0 goto etykieta2

:etykieta1
echo --------------------------------
echo Zawartosc jest identyczna.
goto koniec

:etykieta2
echo --------------------------------
echo Zawartosc jest rozna.
goto koniec

:koniec
echo --------------------------------

echo Koniec programu
pause
@echo off
cls
echo Witaj w porownywarce plikow. Pamietaj aby w atrybutach uruchamiania wpisac kolejno katalogi ktore chcesz porownac.
pause
dir /b %1 > porow1.txt 
dir /b %2 > porow2.txt

fc porow1.txt porow2.txt
ECHO ErrorLevel: %ERRORLEVEL%

if errorlevel 1 goto etykieta2
if errorlevel 0 goto etykieta1

:etykieta1

echo Zawartosc jest identyczna.
goto koniec

:etykieta2

echo Zawartosc jest rozna.
goto koniec

:koniec


echo Koniec programu
pause

^Tak działa ale nie ma porownania dat itp jedynie subfoldery, ich ilosc i nazwa

komentarz 21 października 2016 przez Matty Nowicjusz (150 p.)
ok dałem rade :)

Podobne pytania

0 głosów
3 odpowiedzi 2,009 wizyt
pytanie zadane 6 stycznia 2017 w Systemy operacyjne, programy przez Daaa22 Dyskutant (8,250 p.)
–3 głosów
1 odpowiedź 1,546 wizyt
pytanie zadane 15 września 2017 w Inne języki przez Reavege Nowicjusz (120 p.)
0 głosów
1 odpowiedź 830 wizyt
pytanie zadane 24 lutego 2017 w Inne języki przez Shiro Stary wyjadacz (10,300 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...