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

Wie kann ich via Batch zwei Dateien vergleichen und ZIPen

Frage Entwicklung Batch & Shell

Mitglied: monk71

monk71 (Level 1) - Jetzt verbinden

25.05.2010, aktualisiert 16:41 Uhr, 2922 Aufrufe, 3 Kommentare

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.
01.
  
02.
@echo off & setlocal  
03.
set "source=C:\TEMP\Neuer Ordner"  
04.
set "dest=D:\PLAN"  
05.
set "ext=dhp" 
06.
set "ext2=txt"  
07.
 
08.
for %%f in ("%dest%\*.txt") do ( 
09.
    if exist "%source%\%%~nf.dhp" move "%source%\%%~nf.dhp" "%dest%\" 
10.
	 
11.
	if not exist D:\"%%~nf" md D:\PLAN\"%%~nf" 
12.
	if exist "%dest%\%%~nf.dhp" copy "%dest%\%%~nf.txt" D:\PLAN\"%%~nf" 
13.
	if exist "%dest%\%%~nf.dhp" copy "%dest%\%%~nf.dhp" D:\PLAN\"%%~nf" 
14.
	 
15.
16.
 
17.
For /F "Delims=" %%f in ('Dir /B/A-D "%dest%\*.*"') Do call :ZipIt "%%~fA"  
18.
 
19.
:ZipIt  
20.
Set "Zip=ARCHIV%~n1.zip"  
21.
echo ZIP = %ZIP% 
22.
Set "Zip2=%~n1"  
23.
"C:\Programme\7-Zip\7z.exe" u "D:\PLAN\ZIPFILES_to_ARCHIVE\%ZIP%" "%dest%\%Zip2%.*"  
24.
 



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
Mitglied: LotPings
25.05.2010 um 15:23 Uhr
Hallo Monk,

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 Codetags in der Formatierungshilfe

Ansonsten durchschaue ich deine Struktur noch nicht so ganz.

Gruß
LotPings
Bitte warten ..
Mitglied: monk71
25.05.2010 um 15:34 Uhr
Hallo LotPings

ich habe den Code mal formatiert.
wozu brauche ich den ein Eof??
Bitte warten ..
Mitglied: LotPings
25.05.2010 um 16:03 Uhr
Zitat von monk71:
ich habe den Code mal formatiert.
Sieht schön bunt aus, aber die PHP Syntax passt nicht so ganz zu den Batch Elementen, type=PFP und die <? ?> wieder rausnehmen

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:

01.
@echo off & setlocal 
02.
set "source=C:\TEMP\Neuer Ordner" 
03.
set "dest=D:\PLAN" 
04.
set "ext=dhp" 
05.
set "ext2=txt" 
06.
set 7z="%ProgramFiles%\7-Zip\7z.exe" 
07.
set "Arc=D:\PLAN\ZIPFILES_to_ARCHIVE\ARCHIV" 
08.
 
09.
for %%f in ("%dest%\*.txt") do if exist "%source%\%%~nf.dhp" ( 
10.
  move "%source%\%%~nf.dhp" "%dest%\" 
11.
  if not exist D:\"%%~nf" md D:\PLAN\"%%~nf" 
12.
  copy "%dest%\%%~nf.txt" D:\PLAN\"%%~nf\" 
13.
  copy "%dest%\%%~nf.dhp" D:\PLAN\"%%~nf\" 
14.
  %7z% u "%ARC%%~nf.zip" "%dest%\%%~nf.*" 
15.
)
Gruß
LotPings

Edit: der call ist versehentlich stehemgeblieben, entfernt.
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...