Top-Themen

Aktuelle Themen (A bis Z)

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.

Mitglied: D3ns007

D3ns007 (Level 1) - Jetzt verbinden

03.07.2009, aktualisiert 13:52 Uhr, 8439 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 ..
Ähnliche Inhalte
Batch & Shell

Dateien zu bestehendem Zip-Archiv zufügen

Frage von derronsonBatch & Shell

Hallo liebe Gemeinde, hatte gestern das Problem schon gepostet, bekam auch schnell Hilfe, nochmals danke dafür. Allerdings läuft mein ...

Batch & Shell

Teile eines Dateinamens ändern mit Batch Datei

gelöst Frage von fffffuuuuuuuhhhhBatch & Shell4 Kommentare

Hallo, ich, stelle regelmäßig .mp3-Dateien her, die folgendermaßen von meinem Audioprogramm beschriftet wird: Interpret - Titel _xxxxxx000.mp3 die x stehen für eine ...

Batch & Shell

Batchdatei zum erstellen und verschieben unterschiedlicher dateien

Frage von paulgunter25Batch & Shell5 Kommentare

Hallo, habe mich gerade hier angemeldet, weil ich viele Ansätze für mein Problem gesehen habe, aber nicht so das ...

Batch & Shell

Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens

Tipp von HopfmanBatch & Shell17 Kommentare

Ich habe eine ständig wachsende Anzahl von Dateien aus unterschiedlichen Quellen, die in Unterverzeichnisse verschoben werden sollen. So weit ...

Neue Wissensbeiträge
Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 19 StundenSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

iOS
Updates für Iphone und Co
Information von sabines vor 1 TagiOS

Gestern abend ist iOS 11.3.1 erschienen, ein kleineres Update, dass einige Lücken schließt und "Lahmlegen" nach einem Display Tausch ...

Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 2 TagenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Heiß diskutierte Inhalte
Batch & Shell
Powershell: Im AD nach Rechnern mit bestimmten IP-Adressen suchen
gelöst Frage von Raven42Batch & Shell36 Kommentare

Hallo zusammen, ich suche nach einer Möglichkeit nach Computern im AD zu suchen , deren IP-Adresse mit 10.11.12. beginnt. ...

C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++34 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

Windows Server
Alten DC entfernen
Frage von smartinoWindows Server24 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung22 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...