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
GELÖST

Wie erstelle ich eine Batchdatei um Dateien per ZipCentral zu zippen. Bestehende Archive sollen mit neuen Dateien ergänzt werden. Archive sollen mit Teilen von Dateinamen bezeichnet werden.

Frage Entwicklung Batch & Shell

Mitglied: D3ns007

D3ns007 (Level 1) - Jetzt verbinden

03.07.2009, aktualisiert 13:52 Uhr, 8330 Aufrufe, 19 Kommentare

Hallo Miteinander,
ich würde mich freuen wenn Ihr mich so bald wie möglich unterstützen könntet da das Problem für mich sehr kniffelig ist.

Vielen Dank

Also mein Problem ist Folgendes:

Ich möchte gern über eine Batch aus verschiedenen Dateien ein Zip-Archiv erstellen. Die Daten sehen so nach diesem Schema aus 01-20090703-9088.mdb Die erste Zahlreihe steht für eine Firmen-ID die zweite für das Datum der Erstellung und das dritte ist eine fortlaufende Nummer.

Ich habe zum Test schon mal etwas zusammengeschrieben:

rem Variable die den aktuellen Tag wieder gibt und dazu die Firmen ID (BSp.: 01-090703) modbez steht für Modulbezeichnung
set modbez=01-%date:~-2,4%%date:~-7,2%%date:~-10,2%

rem Quelle des Kopiervorgang
set source=C:\TEST\%modbez%*

rem ziel des Kopiervorgangs (destination)
set dest=Z:\Test \%modbez%



rem ---------------------------------------------------------------------------------------------------------------------

xcopy "%source%" "%dest%" /A /C /H /O /R /Y /D /I



Ich kopiere die Daten quasi von A nach B und erstelle für jeden Tag einen Ordner.
Das Problem dabei ist nur 1. nicht weiß wie ich die Daten zippen kann und 2. das ich nicht weiß wie ich definieren kann, das wenn die Batch durchläuft erkannt wird das diese 01-20090703-001.mdb zu dem dem Zip-Archiv 01-200907 gehört. Das Zip-Archiv muss quasi bei jedem Durchlauf ergänzt werden. Die Daten werden nicht alle an einem Tag erstellt sondern müssen immer wieder geprüft und verglichen werden.

Ich hoffe das war soweit verständlich falls nicht bitte nachhaken.

Komme bei dem Fall überhaupt nicht mehr weiter.

Grüße
D3ns!007
Mitglied: -ricardo-
03.07.2009 um 14:07 Uhr
Hi,

Zu 1:
du kannst mit den IZarc Commandline (http://www.izarc.org/download.html) via Batch ein Zip-Datei erstellen lassen und dieses Archiv auch dann erweitern.

Folgende Parameter stehen dabei zur Auswahl:

izarcc [-commands] [-options] archivefile [@list] [files...]

Commands:

a : add files to archive (default action)
u : update files to archive
m : move files to archive (files only)
d : delete files from archive

r : recurse into subfolders (include subfolders)
p|P : store relative pathnames|store full pathnames
c<0|f|n|x|b> : set the compression level (0 - store; f - fast;
n - normal; x - maximum; b - maximum (bzip2)
e<0..2> : set encryption method (with password for ZIP, BH or JAR)
0 - default Zip 2; 1 - AES-128bit; 2 - AES-256bit
s<password> : specify a password
o : change the archive's date to the newest
file's date in archive
w : include system and hidden files
$<directory> : set custom temp directory
@list : compress the files listed in specified list
x<file> : exclude specified file from the compression process
x@list : exclude the files listed in specified list
Bitte warten ..
Mitglied: D3ns007
03.07.2009 um 14:44 Uhr
Danke für die schnelle Hilfe.

Könntest du mir das ganze vielleicht anhand meiner Frage zeigen weil mit dem izarcc komme ich nicht wirklich weiter. Habe mir jetzt auch mal 7-Zip installiert...
Bitte warten ..
Mitglied: -ricardo-
03.07.2009 um 14:46 Uhr
Zu Punkt 2

Verstehe ich nicht ganz :D

Kannst auf jeden fall den Namen Auslesen und einen Teilstring auf die ersten 9 Stellen machen machen

set filename=01-20090703-001.mdb /den Namen würdest du ja aus dem verzeichniss auslesen
set name=%str:~0,9%

dann mit der Variable %modbez% vergleichen und wenn die übereinstimmen mit ins Archiv packen .... so hättest du zumindest die Zuordnung für das Beispiel oben ...
Bitte warten ..
Mitglied: D3ns007
03.07.2009 um 14:54 Uhr
Ok das heißt dann quasi:

If %filename%=%modbez%

Hier würde dann der Befehl stehen zu zu einem Archive hinzu oder erstelle neues (was ich aber nicht weiß)<<

else
....


Also es gibt ja einen Ordner für heute "01-20090703". Wie kann ich den Ordner zu einem Archiv machen? Und wenn ich sas Archiv habe wie vergleiche ich den Namen der Datei mit dem Archiv?

=> Kenne mich noch nicht so wirklich damit aus...
Bitte warten ..
Mitglied: LotPings
03.07.2009 um 15:30 Uhr
Hallo D3ns!007,
willkommen im Forum.

Wenn im Quelldateinamen alle Informationen (bis auf den Zielpfad) enthalten sind, brauchst du doch nur eine for Schleife die alle Dateien im Quellverzeichnis abklappert und aus den ersten 9 Stellen des Datenbanknamens das Archiv bildet.
Da du 7zip schon installiert hast sollte dies funktionieren (ungetestet)
Mit der u = Update Option kannst du die Batchdatei beliebig oft laufen lassen da nur geänderte Dateien ins Archiv geschrieben werden.

01.
@Echo off 
02.
rem Quelle des Kopiervorgang 
03.
set "source=C:\TEST\" 
04.
rem ziel des Kopiervorgangs (destination) 
05.
set "dest=Z:\Test\" 
06.
Pushd "%source%" 
07.
For /F "Delims=" %%A in ('Dir /B/A-D "??-*.mdb"') Do call :ZipIt "%%~fA" 
08.
Popd 
09.
pause 
10.
Goto :Eof 
11.
:ZipIt 
12.
Set "Zip=%~n1" 
13.
Set "Zip=%Dest%%Zip:~0,9%.zip" 
14.
Echo 7z.exe u "%Zip%"  %1
Gruß
LotPings

Edit: Wenn die Ausgabe korrekt erscheint, das Echo am Anfang von Zeile 14 entfernen. Anführungszecihen ergänzt.
Bitte warten ..
Mitglied: Biber
03.07.2009 um 18:14 Uhr
<OT>
den Namen würdest du ja aus dem verzeichniss auslesen ...

*seufz*

Ist eventuell mehrheitlich gewünscht, dass ich für die deutschen Worte mit der Endung "-niss" einen eigenen running gag counter initialisiere?

Ich hab eigentlich schon genug Aufwand mit diesem Umbenams-Dingens.

Sagen wir so: Ergebnisse, Hindernisse, Verzeichnisse, Hornisse lasse ich ja gelten, aber für den Singular wären mir folgende Synonyme lieber:

- die Verzeichnisse - der einzelne Ordner
- die Hindernisse - die einzelne Hürde
- die Ergebnisse - das einzelne Resultat
- die Hornisse - die einzelne Faltenwespe
etc

</OT>

Ich mach jetzt besser Wochenende...

Grüße
Biber
Bitte warten ..
Mitglied: bastla
03.07.2009 um 19:02 Uhr
@LotPings
Ich schreibe ja lieber (nur für den Fall des Falles) etwa
Pushd "%Quelle%"
(und dann in diesem Fall auch noch eher "%source%" ) - aber vielleicht bin ich hinsichtlich der Anführungszeichen auch nur ein wenig abergläubisch ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
03.07.2009 um 19:36 Uhr
Hallo bastla,
pushd braucht nicht unbedingt Anführungszeichen,
aber es kann natürlich nicht automatisch source in Quelle übersetzen

Danke für den Hinweis, wird geändert.

Schönes WE!

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
03.07.2009 um 20:43 Uhr
@LotPings
War nur exemplarisch gemeint (wenn auch, zugegebener Maßen, mit "pushd" als falschem Exempel ) ...

Auch Dir ein schönes WE
bastla
Bitte warten ..
Mitglied: D3ns007
04.07.2009 um 11:46 Uhr
Hallor Miteinander,
erst mal vielen vielen Dank für die schnelle und kompetente Hilfe!

Ich werde die Anregungen anfang nächster Woche mal testen und Rückmeldung geben.

Grüße

D3ns!007
Bitte warten ..
Mitglied: D3ns007
07.07.2009 um 09:33 Uhr
Guten Morgen,
ich habe jetzt den Quellcode von LotPings getestet, leider ohne Erfolg.

Die Meldung
"Datei nicht gefunden
Drücken Sie eine beliebige Taste..." wird ausgegeben.

Könnte mir bitte jemand die einzelnen Schritte erklären die der Code macht? Damit ich vielleicht selber darauf komme wo das Problem liegt.

Vielen Dank

D3ns!007
Bitte warten ..
Mitglied: 80220
07.07.2009 um 11:30 Uhr
Das Problem liegt mit großer Wahrscheinlichkeit daran, dass 7Z.exe nicht gefunden wird.
Ergänze in in Zeile 14 mal 7Z.exe um den kompletten Pfad zur Exe-Datei.
Bitte warten ..
Mitglied: D3ns007
07.07.2009 um 11:39 Uhr
Mhmm das glaube ich eher nicht da die Fehlermeldung ja kommt obwohl da ja
Rem ... steht, das heißt es würde bloß in der Console angezeigt aber nicht ausgeführt. (wenn ich das richtig sehe)

Hab den Tipp getestet: Dann kommt die mLdung in der Konsole:

"Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung
ist falsch.
Datei nicht gefunden
Drücken Sie eine beliebige Taste . . ."
Bitte warten ..
Mitglied: D3ns007
07.07.2009 um 11:48 Uhr
Hier nochmal der aktuelle Quellcode:


@Echo off

rem Variable die den aktuellen Tag wiedergibt und dazu die Firmen ID (BSp.: 01-090703) modbez steht für Modulbezeichnung
set modbez=01-%date:~-2,4%%date:~-7,2%%date:~-10,2%

rem Quelle des Kopiervorgang
set source="C:\Users\TEST\*%modbez%*.mdb"
rem ziel des Kopiervorgangs (destination)
set dest="Z:\transfer\Test\"

Pushd "%source%"
For /F "Delims=" %%A in ('Dir /B/A-D "01-*.mdb"') Do call :ZipIt "%%~fA"
Popd
pause
Goto :Eof
:ZipIt
Set "Zip=%~n1"
Set "Zip=%Dest%%Zip:~0,9%.zip"
Echo 7z.exe u "%Zip%" %1
Bitte warten ..
Mitglied: 80220
07.07.2009 um 12:00 Uhr
Setze bitte den Code in Tags, siehe Formatierungshilfe.

Source darf nur den ORDNERpfad enthalten und keine komplette Pfadangabe zu einer Datei, und erst recht keine Wildcard-Zeichen.
Bitte warten ..
Mitglied: D3ns007
07.07.2009 um 12:07 Uhr
Quasi so?:

01.
@Echo off 
02.
 
03.
rem Variable die den aktuellen Tag wiedergibt und dazu die Firmen ID (BSp.: 01-090703) modbez steht für Modulbezeichnung 
04.
set modbez=01-%date:~-2,4%%date:~-7,2%%date:~-10,2% 
05.
 
06.
rem Quelle des Kopiervorgang 
07.
set source="C:\Users\TEST\" 
08.
rem ziel des Kopiervorgangs (destination) 
09.
set dest="Z:\transfer\Test\" 
10.
 
11.
Pushd "%source%" 
12.
For /F "Delims=" %%A in ('Dir /B/A-D "01-*.mdb"') Do call :ZipIt "%%~fA" 
13.
Popd 
14.
pause 
15.
Goto :Eof 
16.
:ZipIt 
17.
Set "Zip=%~n1" 
18.
Set "Zip=%Dest%%Zip:~0,9%.zip" 
19.
"C:\Program Files\7-Zip\7z.exe" u "%Zip%"  %1

So jetzt hab ich das angepasst.

Diese Meldung kommt:

"Datei nicht gefunden
Drücken Sie eine beliebige Taste . . ."
Bitte warten ..
Mitglied: 80220
07.07.2009 um 12:18 Uhr
Ja. Und jetzt noch den Pfad zu 7z.exe in Zeile 19 ergänzen (und das Echo wegnehmen, wenn es funktioniert)
Bitte warten ..
Mitglied: D3ns007
08.07.2009 um 17:45 Uhr
Also das Problem wurde gelöst hier der Quellcode dazu:

01.
@Echo  
02.
 
03.
set source="C:\Users\USERNAME\Test" 
04.
 
05.
 
06.
Pushd "%source%" 
07.
For /F "Delims=" %%A in ('Dir /B/A-D "C:\Users\USERNAME\Test\01-*.mda"') Do call :ZipIt "%%~fA" 
08.
Popdrem 
09.
Del "C:\Test\01-*.mda" 
10.
Goto :Eof 
11.
:ZipIt 
12.
Set "Zip=%~n1" 
13.
Set "Zip=%archive%%Zip:~0,9%.zip" 
14.
"C:\Program Files\7-Zip\7z.exe" u "%Zip%"  %1
Vielen Dank für die zahlreich und kompetente Hilfe!

Grüße
D3ns!007
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
Namen mehrerer Dateien ergänzen per Batchdatei (2)

Frage von adventureman2 zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei mehrere Dateien auswählen (7)

Frage von Doppellhelix zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (23)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...