Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Dateiverzeichnisse via Batch vergleichen und in Textdatei schreiben

Frage Entwicklung Batch & Shell

Mitglied: Franzmann

Franzmann (Level 1) - Jetzt verbinden

09.02.2010 um 11:21 Uhr, 5784 Aufrufe, 12 Kommentare

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
Mitglied: iVirusYx
09.02.2010 um 12:55 Uhr
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
Bitte warten ..
Mitglied: Franzmann
09.02.2010 um 13:15 Uhr
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 Bin wirklich ein Programmieranfänger
Viel mehr bin ich auch nicht. Aber ist doch kein Problem, bin für alle Anregungen dankbar ;)
Bitte warten ..
Mitglied: 60730
09.02.2010 um 14:00 Uhr
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
01.
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ß
Bitte warten ..
Mitglied: Franzmann
09.02.2010 um 14:13 Uhr
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
01.
> xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt 
02.
> 
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ß
Bitte warten ..
Mitglied: 60730
09.02.2010 um 14:21 Uhr
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
>
01.
> > xcopy quelle\*.* ziel\ /d /L |find "\" >dateiliste.txt 
02.
> > 
> 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
Gruß
zurück
Bitte warten ..
Mitglied: Franzmann
09.02.2010 um 14:33 Uhr
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
na denn
Bitte warten ..
Mitglied: 60730
09.02.2010 um 14:53 Uhr
??
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

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......
Bitte warten ..
Mitglied: Franzmann
09.02.2010 um 15:09 Uhr
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 !
Bitte warten ..
Mitglied: 60730
09.02.2010 um 16:49 Uhr
Zitat von iVirusYx:
Sorry 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ß
Bitte warten ..
Mitglied: Franzmann
09.02.2010 um 17:00 Uhr
Zitat von 60730:
> Zitat von iVirusYx:
> ----
> Sorry 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ß
Bitte warten ..
Mitglied: 60730
09.02.2010 um 17:06 Uhr
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...
Bitte warten ..
Mitglied: Franzmann
10.02.2010 um 08:17 Uhr
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...
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
gelöst (Batch) Nummern vergleichen (3)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...