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

Frage Entwicklung Batch & Shell

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, 8423 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 & Shell16 Kommentare

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

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 8 StundenRouter & Routing2 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 14 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 19 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...

Sonstige Systeme
7-zip: Programm frägt nach Passwort erst bei einzelnen Dateien
Frage von freeskierchrisSonstige Systeme7 Kommentare

Guten Morgen, ich habe ein Problem beim Arbeiten mit 7-zip: Wenn ich die einzelnen Dateien zu einem Archiv verpacke ...