Windows 3.1x Support Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Memberlist || Home || Statistik || Kalender || Staff Willkommen Gast!
[ win31.de ] [ Impressum/Kontakt ] [ Über das Forum/Regeln ]

Windows 3.1x Support Forum » MS DOS 1.x-8.x » 2 Daten Vergleichen » Threadansicht

Autor Thread - Seiten: -1-
000
11.09.2006, 23:29 Uhr
Frank.j



Hallo:

ich habe ein Problem

Ich möchte 2 Daten Vergleichen. Und bei Nichtübereinstimmung
Überschreiben.

P.S: WindowsXP
Suche Batch Anweisungen für- DOS

Gruß: Frank
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
001
13.09.2006, 18:23 Uhr
Peter Dassow




Zitat:
Frank.j postete
Hallo:

ich habe ein Problem

Ich möchte 2 Daten Vergleichen. Und bei Nichtübereinstimmung
Überschreiben.

P.S: WindowsXP
Suche Batch Anweisungen für- DOS

Gruß: Frank

Daten oder Dateien ;-) ?

Dateien: mit dem Befehl FC /B datei1 datei2 kannst Du binäre Dateien vergleichen, mit dem Befehl COMP datei1 datei2 Textdateien.
Der Errorlevel wird ungleich 0 gesetzt bei Differenzen

Daten: Zwei Umgebungsvariablen ?
IF "%VARIABLE1%"=="%VARIABLE2%" GOTO MARKE1
REM ELSE ZWEIG
Programmaufruf1
GOTO ENDE
:MARKE1
Programmaufruf2
:ENDE

Was für Daten könntest Du sonst noch meinen ... k.A.

Gruss
Peter
--
Infos zu alten CP/M Rechnern - auch hier zu finden: http://www.z80.eu :-)

Dieser Post wurde am 13.09.2006 um 18:24 Uhr von Peter Dassow editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
002
15.09.2006, 00:33 Uhr
Frank.j



Hi: Peter

Ich habe für ein test, 1 Datei Aus C:\Windows\System Ausgesucht
( AVICAP.DLL )
Und für den test umbenannt in C:\T1\T1.DDL und C:\T2\T1.DDL

Und genau dafür möchte ich gerne ein Batch Anweisungen für- DOS

Wie genau schreibe oder binde ich die C:\T1\T1.DDL und C:\T2\T1.DDL
In eine Batch Anweisung ein
Denn ich Möchte die 2 Dateien vergleichen.
Und bei einer Nichtübereinstimmung Überschreiben

Ein klein bissel mehr Beschreibung und
C:\T1\T1.DDL und C:\T2\T1.DDL Mit einfügen
Das ich das besser versteh
Alles das Mit ? zeichnen kapiere ich nicht

Daten: Zwei Umgebungsvariablen ?
? IF "%VARIABLE1%"=="%VARIABLE2%" GOTO MARKE1
? REM ELSE ZWEIG
? Programmaufruf1
GOTO ENDE
? :MARKE1
? Programmaufruf2
:ENDE

Gruss:
Frank

Dieser Post wurde am 15.09.2006 um 13:12 Uhr von gabyde editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
003
17.09.2006, 19:29 Uhr
Peter Dassow




Zitat:
Frank.j postete
Hi: Peter

Ich habe für ein test, 1 Datei Aus C:\Windows\System Ausgesucht
( AVICAP.DLL )
Und für den test umbenannt in C:\T1\T1.DDL und C:\T2\T1.DDL

Und genau dafür möchte ich gerne ein Batch Anweisungen für- DOS

Wie genau schreibe oder binde ich die C:\T1\T1.DDL und C:\T2\T1.DDL
In eine Batch Anweisung ein
Denn ich Möchte die 2 Dateien vergleichen.
Und bei einer Nichtübereinstimmung Überschreiben

Ein klein bissel mehr Beschreibung und
C:\T1\T1.DDL und C:\T2\T1.DDL Mit einfügen
Das ich das besser versteh
Alles das Mit ? zeichnen kapiere ich nicht

Daten: Zwei Umgebungsvariablen ?
? IF "%VARIABLE1%"=="%VARIABLE2%" GOTO MARKE1
? REM ELSE ZWEIG
? Programmaufruf1
GOTO ENDE
? :MARKE1
? Programmaufruf2
:ENDE

Das o.g. Beispiel war dafür gedacht, Umgebungsvariablen zu überprüfen/zu vergleichen.
Wenn Du Dateien vergleichen willst, geht das natürlich so nicht.

Mach's am Besten so:

FC /B T1.DLL T2.DLL | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDP
:UNGLEICH
ECHO Dateien sind ungleich
:ENDP


Die Ausgabeumleitung nach "nul" bewirkt nur, dass die Meldungen nicht auf den Bildschirm kommen.

Gruss
Peter
--
Infos zu alten CP/M Rechnern - auch hier zu finden: http://www.z80.eu :-)

Dieser Post wurde am 17.09.2006 um 19:32 Uhr von gabyde editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
004
18.09.2006, 15:40 Uhr
DosAmp
Administrator
Avatar von DosAmp

Beziehungsweise so:


Quellcode:
rem vergleich.bat
rem Aufruf: Vergleich <Quelle> <Ziel>

rem Für DOS-Box unter Windows 9x "%1" "%2" schreiben
rem (für lange Dateinamen mit Leerzeichen)

FC /B %1 %2 | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDE
:UNGLEICH
rem siehe obigen Hinweis
copy /y %1 %2
:ENDE

Die Aussage, dass fc einen Fehlercode zurückliefert, ist übrigens falsch. Nur find liefert einen.
Zudem kann man Textdateien mit Option FC /L abgleichen.
--
DosAmp. Macht das Forum unsicher seit Sommer 2005.
System-Profile: Hauptrechner (C2D S775) – Zweitrechner (P4 S423)
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
005
18.09.2006, 19:18 Uhr
Peter Dassow




Zitat:
DosAmp postete
Beziehungsweise so:


Quellcode:
rem vergleich.bat
rem Aufruf: Vergleich <Quelle> <Ziel>

rem Für DOS-Box unter Windows 9x "%1" "%2" schreiben
rem (für lange Dateinamen mit Leerzeichen)

FC /B %1 %2 | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDE
:UNGLEICH
rem siehe obigen Hinweis
copy /y %1 %2
:ENDE

Die Aussage, dass fc einen Fehlercode zurückliefert, ist übrigens falsch.

Ja, das ist (leider) wirklich so, war im Eifer des Gefechts weiter oben zu schnell niedergeschrieben ;-)

Zitat:
Nur find liefert einen.
Zudem kann man Textdateien mit Option FC /L abgleichen.

Na es handelte sich ja im Beispiel um DLLs, bisher waren das keine Textdateien.

Gruss
Peter
--
Infos zu alten CP/M Rechnern - auch hier zu finden: http://www.z80.eu :-)
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
006
22.09.2006, 21:04 Uhr
Frank.j



FC /B T1.DLL T2.DLL | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDP
:UNGLEICH
ECHO Dateien sind ungleich
:ENDP

Das o.g. Beispiel
Dann kommt diese fahler
Was soll das sein. Was mach ich falsch

C:\1>FC /B T1.dll T2.dll | FIND "FC: Keine Unterschiede" 1>nul
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.

Gruß: Frank.J

Dieser Post wurde am 22.09.2006 um 21:50 Uhr von gabyde editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
007
23.09.2006, 14:02 Uhr
DosAmp
Administrator
Avatar von DosAmp

Nimm mal nicht "1>nul", sondern nur "> nul".
Da du ja XP benutzt (hatte ich vergessen), sähe das ganze übrigens so aus:

Quellcode:
@echo off

rem vergleich.bat
rem Aufruf: Vergleich <Quelle> <Ziel>

FC /B "%1" "%2" | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDE
:UNGLEICH
copy /y "%1" "%2"
:ENDE

Wenn du den neuen Code in die Datei "vergleich.bat" eingetragen hast, kannst du "vergleich t1.dll t2.dll" eingeben, um diese Dateien zu vergleichen und ggf. t2.dll zu ersetzen.
Das klappt auch wirklich unter Windows XP, selbst getestet...
--
DosAmp. Macht das Forum unsicher seit Sommer 2005.
System-Profile: Hauptrechner (C2D S775) – Zweitrechner (P4 S423)

Dieser Post wurde am 23.09.2006 um 14:08 Uhr von DosAmp editiert.
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
008
23.09.2006, 14:58 Uhr
Frank.j



Hi,

Meine schult ich Doofi Habe die Batch Datei umbenannt in den Name FC.bat
Und darum die Fehlermeldung


C:\1>FC /B T1.dll T2.dll | FIND "FC: Keine Unterschiede" 1>nul
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
Ein Prozess hat versucht, zu einer nicht bestehenden Pipe zu schreiben.
________________________________________________________
Und Jajaja du hast Recht Es klappt einwandfrei
noch Mals danke an alle bis dann

FC /B "%1" "%2" | FIND "FC: Keine Unterschiede" > nul
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDE
:UNGLEICH
copy /y "%1" "%2"
:ENDE

Gruß: frank.j
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
009
25.09.2006, 20:37 Uhr
Frank.j



Hi;

Und wen ich jetzt, 3 Dateien vergleichen möchte.
Die den gleichen Namen haben ( T1.dll )
Und durch ein update verändert wurde


( T1.dll ) original
( T1.dll ) update-1
( T1.dll ) update-2
u.s.w

Das Beispiel ist von DosAmp
FC /B /A C:\1\T1.dll C:\s\T1.dll | FIND "FC: Keine Unterschiede" > test2.txt
IF ERRORLEVEL 1 GOTO UNGLEICH
ECHO Dateien sind gleich
GOTO ENDE
:UNGLEICH
copy /y C:\s\T1.dll >> test1.txt
:ENDE

Gruß: Frank.J
Seitenanfang Seitenende
Profil || Private Message || Suche Zitatantwort || Editieren || Löschen || IP
Seiten: -1-     [ MS DOS 1.x-8.x ]  



Win31.de

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek