franzmann
Goto Top

Dateiverzeichnisse via Batch vergleichen und in Textdatei schreiben

Hallo zusammen,
lang ists her aber ich hoffe mir kann trotzdem noch geholfen werden ;)

Hab folgendes vor.
Ich will 2 Dateiverzeichnisse vergleichen (also sämtliche darin befindlichen Dateien)
Die Dateien die gleich sind, die unterschiedlich sind oder gar in einem Verzeichnis fehlen, sollen jeweils in eine Textdatei geschrieben werden.

Mein Ansatz siehts so aus:
@echo OFF

SET LOCALFOLDER=C:\temp
SET OTHERFOLDER=C:\temp1

:LOCALKEYTEMP

SET FILE=DONE


FOR /F "TOKENS=*" %%G IN ('DIR/B ^"%LOCALFOLDER%\*.*^"') DO SET FILE=%%G
ECHO %FILE%

IF %FILE%==DONE GOTO END
ECHO COMP "%LOCALFOLDER%\%FILE%" "%OTHERFOLDER%\%FILE%" | FIND "FILES COMPARE OK" > NUL


:: echo (0) Fehlerfreier Lauf, Dateien sind identisch
:: echo (1) Unterschiedliche Dateien gefunden
:: echo (2) Dateifehler, Datei nicht vorhanden
IF ERRORLEVEL 0 GOTO :NOFAILURE
IF ERRORLEVEL 1 GOTO :DIFFERENTFILES
IF ERRORLEVEL 2 GOTO :NOTAVAILABLE


:NOFAILURE
ECHO N|COMP "%LOCALFOLDER%\%FILE%" "%OTHERFOLDER%\%FILE%" >> C:\overview\nofailure.txt
GOTO LOCALKEYTEMP


:DIFFERENTFILES
ECHO N|COMP "%LOCALFOLDER%\%FILE%" "%OTHERFOLDER%\%FILE%" >> C:\overview\differentfiles.txt
GOTO LOCALKEYTEMP

:NOTAVAILABLE
ECHO N|COMP "%LOCALFOLDER%\%FILE%" "%OTHERFOLDER%\%FILE%" >> C:\overview\notavailable.txt
GOTO LOCALKEYTEMP

:END
EXIT

Jetzt hab ich das Problem das er aber nur in einem Ordner sucht und das in einer Endlosschleife...
Das Ergebnis schreibt er in die nofailure.txt !

Hoffe jemand kann mir helfen.. thx so far face-smile

Content-ID: 135509

Url: https://administrator.de/forum/dateiverzeichnisse-via-batch-vergleichen-und-in-textdatei-schreiben-135509.html

Ausgedruckt am: 24.12.2024 um 13:12 Uhr

iVirusYx
iVirusYx 09.02.2010 um 12:55:53 Uhr
Goto Top
Ich bin jetzt kein Programmierer, habe grade erst angefangen damit, aber legst du da die FOR-Schleife nicht auf den einen Ordner?
Und wiederholst hiermit immer wieder den Durchgang durch den einen Ordner.

Gibt es beim "batchen" keine Schleifen wie "DO UNTIL" oder so?

Sorry face-confused Bin wirklich ein Programmieranfänger
Franzmann
Franzmann 09.02.2010 um 13:15:16 Uhr
Goto Top
Zitat von @iVirusYx:
Ich bin jetzt kein Programmierer, habe grade erst angefangen damit, aber legst du da die FOR-Schleife nicht auf den einen Ordner?
Und wiederholst hiermit immer wieder den Durchgang durch den einen Ordner.
Ich auch nicht ;) ! Es gibt nur die eine Schleife weil die sich wiederholen soll und anhand des Errorlevels ausgewertet, sprich in die jeweilige Datei geschrieben, werden soll.
Gibt es beim "batchen" keine Schleifen wie "DO UNTIL" oder so?
Doch gibt es...

Sorry face-confused Bin wirklich ein Programmieranfänger
Viel mehr bin ich auch nicht. Aber ist doch kein Problem, bin für alle Anregungen dankbar ;)
60730
60730 09.02.2010 um 14:00:48 Uhr
Goto Top
Servus,

ich würde das ganze (je nach den Dateien) anders anfangen.

Pro datei ein Comp / fc kann ganz schön lange und graue Bärte verursachen.

Ein
xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt  
liefert da schon etwas mehr in kürzerer Zeit ab.

Von daher eher in den Ansatz mehr Zeit investieren - denn der obere steckt foller vehler ;-(

Gruß
Franzmann
Franzmann 09.02.2010 um 14:13:26 Uhr
Goto Top
Zitat von @60730:
Servus,

ich würde das ganze (je nach den Dateien) anders anfangen.

Pro datei ein Comp / fc kann ganz schön lange und graue Bärte verursachen.

Ein
> xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt  
> 
liefert da schon etwas mehr in kürzerer Zeit ab.
Ok sehe ich u.U. ein.
Wenn ich 2 Verzeichnisse mit Musterdateien anlege wird zwar die "dateiliste.txt" angelegt aber sie bleibt leer.
Einen Fehler bekomme ich am CMD Prompt auch nicht.

Von daher eher in den Ansatz mehr Zeit investieren - denn der obere steckt foller vehler ;-(
Inwiefern ?

Gruß
60730
60730 09.02.2010 um 14:21:24 Uhr
Goto Top
Zitat von @Franzmann:
> Zitat von @60730:
> ----
> Servus,
>
> ich würde das ganze (je nach den Dateien) anders anfangen.
>
> Pro datei ein Comp / fc kann ganz schön lange und graue Bärte verursachen.
>
> Ein
>
> > xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt  
> > 
> liefert da schon etwas mehr in kürzerer Zeit ab.
Ok sehe ich u.U. ein.
Wenn ich 2 Verzeichnisse mit Musterdateien anlege wird zwar die "dateiliste.txt" angelegt aber sie bleibt leer.

.. und was passiert, wenn alles nach dem-inclusive dem > weggelassen wird?
... bzw: im 2. Stepp das |find "\", dass dazu da ist die xxDatei(en) kopiert Zeile auszublenden?
Einen Fehler bekomme ich am CMD Prompt auch nicht.
>
> Von daher eher in den Ansatz mehr Zeit investieren - denn der obere steckt foller vehler ;-(
Inwiefern ?

naja...
SET FILE=DONE
FOR /F "TOKENS=*" %%G IN ('DIR/B ^"%LOCALFOLDER%\*.*^"') DO SET FILE=%%G
IF %FILE%==DONE GOTO END

da mag ich nicht wirklich drüber weiterschnacken face-wink
Gruß
zurück
Franzmann
Franzmann 09.02.2010 um 14:33:25 Uhr
Goto Top
xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt
dateiliste.txt wird angelegt ist aber leer !
.. und was passiert, wenn alles nach dem-inclusive dem > weggelassen wird?
Nichts ! Kein Fehler aber auch kein Ergebnis..
... bzw: im 2. Stepp das |find "\", dass dazu da ist die xxDatei(en) kopiert Zeile auszublenden?
0 Datei(en) kopiert
naja...
> SET FILE=DONE
> FOR /F "TOKENS=*" %%G IN ('DIR/B ^"%LOCALFOLDER%\*.*^"') DO SET FILE=%%G
> IF %FILE%==DONE GOTO END
hmm
da mag ich nicht wirklich drüber weiterschnacken face-wink
na denn
60730
60730 09.02.2010 um 14:53:54 Uhr
Goto Top
??
Nichts ! Kein Fehler aber auch kein Ergebnis..
0 Datei(en) kopiert
... jetzt ist die Frage - worin Unterscheiden sich denn Quell und Zieldateien im Test und ist der Test auch das, was im "produktiveinsatz" erwartet wird?

hmm
Hör mir auf mit hmm face-wink

du kannst doch niicht zuerst etwas statisch setzen, danach in einer schleife wieder neu setzen und nachdem die schleife abgearbeitet wurde erwarten, das die erstbesetzung wieder gilt?

Die Schleife arbeitet doch solange, bis nix mehr in der Schleife drin ist......
Franzmann
Franzmann 09.02.2010 um 15:09:55 Uhr
Goto Top
0 Datei(en) kopiert
... jetzt ist die Frage - worin Unterscheiden sich denn Quell und Zieldateien im Test und ist der Test > auch das, was im "produktiveinsatz" erwartet wird?
In der Anzahl der Dateien und bei diversen Dateien auch an der Größe.
du kannst doch niicht zuerst etwas statisch setzen, danach in einer schleife wieder neu setzen und > nachdem die schleife abgearbeitet wurde erwarten, das die erstbesetzung wieder gilt?
Die Schleife arbeitet doch solange, bis nix mehr in der Schleife drin ist......
Bin leider kein Programmierer und habs mir zusammengetragen !
60730
60730 09.02.2010 um 16:49:21 Uhr
Goto Top
Zitat von @iVirusYx:
Sorry face-confused Bin wirklich ein Programmieranfänger
das soll man ja bekanntlich ändern können...

Nur was willst du denn als Anfang "programmieren"?

Soll das ein Synctool werden? ->in beide Richtungen?
In der Anzahl der Dateien und bei diversen Dateien auch an der Größe.
ja nee iss klar - geht ein bisschen ungenauer?

Gruß
Franzmann
Franzmann 09.02.2010 um 17:00:01 Uhr
Goto Top
Zitat von @60730:
> Zitat von @iVirusYx:
> ----
> Sorry face-confused Bin wirklich ein Programmieranfänger
das soll man ja bekanntlich ändern können...
Haste mal gesehen von wem das ist ?

Nur was willst du denn als Anfang "programmieren"?
Ich will einfachnur 2Verzeichnisse auf unterschiedliche Datenbestände hin prüfen.

Soll das ein Synctool werden? ->in beide Richtungen?
Nee...
> In der Anzahl der Dateien und bei diversen Dateien auch an der Größe.
ja nee iss klar - geht ein bisschen ungenauer?
Wo ist das Problem ?
Bringts dir was wenn ich 6 gleiche (Name und Größe) txt Dateien habe, 4 unterschiedliche (Name gleich, Größe unterscheidlich), und meinetwegen 1 Datei ist nur in einem Verzeichnis vorhanden ?
Wenn ja, dann tuts mir Leid...
Gruß
60730
60730 09.02.2010 um 17:06:29 Uhr
Goto Top
Wenn ja, dann tuts mir Leid...

find ich nun aber wirklich tragisch und ich tu mir dann auch selber leid....

Um dir bei deinem Problem helfen zu können, muß man wissen - wo der Schuh drückt.
Aber nein - mir bringts nix...
Dateiverzeichnisse via Batch vergleichen und in Textdatei schreiben
War deine Überschrift und einen Ansatz dazu hab ich dir geliefert, aber ich glaub ich setze mich mal lieber wieder ab...
Franzmann
Franzmann 10.02.2010 um 08:17:11 Uhr
Goto Top
Ich lass das jetzt einfach mal so stehen.
Es ging mir um Hilfe und nicht um Belehrungen irgendwelcher Art.
Ansätze ? Sachen schlecht reden kann jeder, aber auch konstruktiv sagen was Mist ist,
wie mans besser machen kann, das kannste ja anscheinend auch nicht und hätte mir mehr gebracht...