Wie kann ich via Batch zwei Dateien vergleichen und ZIPen
Hallo,
Ich bin neu hier und hoffe einer kann mir helfen da ich den Wald vor lauter Bäumen nicht mehr sehe.
Ich versuche einen Batch zu schreiben, welcher mir Dateien auf verschiedenen Servern an Hand des Präfixes vergleicht.
Wenn der Präfix gleich ist, soll diese Datei von Server A nach Server B verschoben werden.
Danach sollen diese beiden Dateien in ein neu erstelltes Verzeichnis verschoben/kopiert werden. Das neue Verzeichnis hat den Selben Namen wie der Präfix der beiden Dateien.
Nun möchte ich noch, das der Batch durch jedes neue Verzeichnis geht und die beiden enthaltenen Dateien zusammen mit 7ZIP komprimiert und diese ZIP Datei dann in einen bestimmten Ordner zur Archivierung ablegt.
Folgenden Code habe ich schon.
Bis jetzt schaffe ich es die Dateien zu vergleichen,ein neues Verzeichnis zu erstellen und die Dateien in das neue Verzeichnis zu kopieren.
Wenn ich versuche die Dateien zu verschieben, läuft das Script nicht ganz durch, wenn es mehr als zwei Dateien sind.
Außerdem finde ich nicht den Trick, wie ich dem Script sage, das es durch die neu und nur durch die neuen Verzeichnisse laufen soll und die Dateien darin packen soll.
Bis jetzt nimmt 7ZIP nur die original Dateien,da sie ja nicht verschoben sind. Sie müssen aber Verschoben werden, damit ich so die kontrolle habe das keine Datei doppelt überprüft wird. Es kommen ja jeden Tag neue Dateien auf beiden Servern hinzu.
Ich hoffe mir kann jemand von euch helfen.
Gruß
Monk
Ich bin neu hier und hoffe einer kann mir helfen da ich den Wald vor lauter Bäumen nicht mehr sehe.
Ich versuche einen Batch zu schreiben, welcher mir Dateien auf verschiedenen Servern an Hand des Präfixes vergleicht.
Wenn der Präfix gleich ist, soll diese Datei von Server A nach Server B verschoben werden.
Danach sollen diese beiden Dateien in ein neu erstelltes Verzeichnis verschoben/kopiert werden. Das neue Verzeichnis hat den Selben Namen wie der Präfix der beiden Dateien.
Nun möchte ich noch, das der Batch durch jedes neue Verzeichnis geht und die beiden enthaltenen Dateien zusammen mit 7ZIP komprimiert und diese ZIP Datei dann in einen bestimmten Ordner zur Archivierung ablegt.
Folgenden Code habe ich schon.
@echo off & setlocal
set "source=C:\TEMP\Neuer Ordner"
set "dest=D:\PLAN"
set "ext=dhp"
set "ext2=txt"
for %%f in ("%dest%\*.txt") do (
if exist "%source%\%%~nf.dhp" move "%source%\%%~nf.dhp" "%dest%\"
if not exist D:\"%%~nf" md D:\PLAN\"%%~nf"
if exist "%dest%\%%~nf.dhp" copy "%dest%\%%~nf.txt" D:\PLAN\"%%~nf"
if exist "%dest%\%%~nf.dhp" copy "%dest%\%%~nf.dhp" D:\PLAN\"%%~nf"
)
For /F "Delims=" %%f in ('Dir /B/A-D "%dest%\*.*"') Do call :ZipIt "%%~fA"
:ZipIt
Set "Zip=ARCHIV%~n1.zip"
echo ZIP = %ZIP%
Set "Zip2=%~n1"
"C:\Programme\7-Zip\7z.exe" u "D:\PLAN\ZIPFILES_to_ARCHIVE\%ZIP%" "%dest%\%Zip2%.*"
Bis jetzt schaffe ich es die Dateien zu vergleichen,ein neues Verzeichnis zu erstellen und die Dateien in das neue Verzeichnis zu kopieren.
Wenn ich versuche die Dateien zu verschieben, läuft das Script nicht ganz durch, wenn es mehr als zwei Dateien sind.
Außerdem finde ich nicht den Trick, wie ich dem Script sage, das es durch die neu und nur durch die neuen Verzeichnisse laufen soll und die Dateien darin packen soll.
Bis jetzt nimmt 7ZIP nur die original Dateien,da sie ja nicht verschoben sind. Sie müssen aber Verschoben werden, damit ich so die kontrolle habe das keine Datei doppelt überprüft wird. Es kommen ja jeden Tag neue Dateien auf beiden Servern hinzu.
Ich hoffe mir kann jemand von euch helfen.
Gruß
Monk
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 143487
Url: https://administrator.de/forum/wie-kann-ich-via-batch-zwei-dateien-vergleichen-und-zipen-143487.html
Ausgedruckt am: 30.04.2025 um 22:04 Uhr
3 Kommentare
Neuester Kommentar

Hallo Monk,
willkommen im Forum,
auf den ersten Blick fällt mir auf das vor dem Label
Bitte formatiere deinen Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen in der Formatierungshilfe
Ansonsten durchschaue ich deine Struktur noch nicht so ganz.
Gruß
LotPings
willkommen im Forum,
auf den ersten Blick fällt mir auf das vor dem Label
:Zipit
eine Zeile mit Goto :Eof
fehlt.Bitte formatiere deinen Code zur besseren Les-/Referenzier-barkeit unbedingt mit den dafür vorgesehenen in der Formatierungshilfe
Ansonsten durchschaue ich deine Struktur noch nicht so ganz.
Gruß
LotPings

Sieht schön bunt aus, aber die PHP Syntax passt nicht so ganz zu den Batch Elementen, type=PFP und die <? ?> wieder rausnehmen 
Folgendes ist mir aufgefallen:
Vielleicht passt diese vereinfachte Version:
Gruß
LotPings
Edit: der call ist versehentlich stehemgeblieben, entfernt.
wozu brauche ich den ein Eof??
Weil der Hauptbatch nach der For Schleife sonst mit "leerem" {%1} in die Subroutine Zipit hineinläuft.Folgendes ist mir aufgefallen:
- In D:\Plan liegen .Txt deren Namen du mit der Ext dhp in %Source% probierst und falls vorhanden nach %Dest% verschiebst.
- Wenn es diesen Namen nicht als Ordner im Root von D: gibt legst du ihn unterhalb von D:\Plan an.
- Der if in Zeile 12 ist witzlos, das ist deine Ausgangsbedingung.
- In 17 beziehst du dich beim Dir auf %%~nf das zu diesem Zeitpunkt ausserhalb der ersten Schleife nicht existiert.
Vielleicht passt diese vereinfachte Version:
@echo off & setlocal
set "source=C:\TEMP\Neuer Ordner"
set "dest=D:\PLAN"
set "ext=dhp"
set "ext2=txt"
set 7z="%ProgramFiles%\7-Zip\7z.exe"
set "Arc=D:\PLAN\ZIPFILES_to_ARCHIVE\ARCHIV"
for %%f in ("%dest%\*.txt") do if exist "%source%\%%~nf.dhp" (
move "%source%\%%~nf.dhp" "%dest%\"
if not exist D:\"%%~nf" md D:\PLAN\"%%~nf"
copy "%dest%\%%~nf.txt" D:\PLAN\"%%~nf\"
copy "%dest%\%%~nf.dhp" D:\PLAN\"%%~nf\"
%7z% u "%ARC%%~nf.zip" "%dest%\%%~nf.*"
)
Gruß
LotPings
Edit: der call ist versehentlich stehemgeblieben, entfernt.