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:
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
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
12 Kommentare
Neuester Kommentar
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 Bin wirklich ein Programmieranfänger
Und wiederholst hiermit immer wieder den Durchgang durch den einen Ordner.
Gibt es beim "batchen" keine Schleifen wie "DO UNTIL" oder so?
Sorry Bin wirklich ein Programmieranfänger
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
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ß
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
Von daher eher in den Ansatz mehr Zeit investieren - denn der obere steckt foller vehler ;-(
Gruß
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
>
> 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.
> 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
> >
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 ?
>
> 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
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
Gruß
zurück
??
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......
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?0 Datei(en) kopiert
hmm
Hör mir auf mit hmm 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......
das soll man ja bekanntlich ändern können...
Nur was willst du denn als Anfang "programmieren"?
Soll das ein Synctool werden? ->in beide Richtungen?
Gruß
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ß
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...