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

Ordner zippen mit Batch

Frage Entwicklung

Mitglied: rubono

rubono (Level 1) - Jetzt verbinden

08.08.2012 um 16:19 Uhr, 11984 Aufrufe, 18 Kommentare

Hallo Leute,

hab da mal eine Frage

folgendermaßen stellt sich die Sache dar:

ich habe einen Ordner welcher mehrere Unterordner hat und in diesen Unterordnern sind mehrere .zip-Files.
Nun sollen diese .zip Files alle zu einer .zip File gezippt werden und diese .zip File dann in dem jeweiligen Unterordner abgespeichert werden. Und das alles mit Batch.
Ich hoffe trotz dieser komischen Erklärung könnt ihr mir weiterhelfen. ;)

Grüße

rubono
Mitglied: tobi83
08.08.2012 um 20:51 Uhr
Hi,

nimm 7zip damit geht sowas auch unter Windows. Hier findest du sogar ein paar Beispiele:
http://www.dotnetperls.com/7-zip-examples

Gruß
-tobi
Bitte warten ..
Mitglied: bastla
08.08.2012, aktualisiert 09.08.2012
Hallo rubono!

Wenn ich das richtig interpretiere, sollen also je Ordner die enthaltenen zip-Dateien zu einer einzigen zusammengefasst (und danach gelöscht?) werden.

Generell ginge das etwa so (ungetestet):
01.
@echo off & setlocal 
02.
set "Startordner=D:\Oberordner" 
03.
set "7z=%ProgramFiles%\7-zip\7z.exe" 
04.
 
05.
for /d /r "%Startordner%" %%i in (*) do ( 
06.
    pushd "%%i" 
07.
    echo Bearbeite "%%i" 
08.
    if not exist "%%~ni.zip" ( 
09.
        echo "%7z%" a "%%~ni.zip" *.zip -mx0 && ( 
10.
            for /f "delims=" %%a in ('dir /b *.zip') do if /i "%%a" neq "%%~ni.zip" echo del "%%a" 
11.
12.
13.
    popd 
14.
15.
echo Fertig.
Es sollten jetzt alle Unterordner des angegebenen Startordners durchlaufen und alle darin befindlichen zip-Dateien zu einer einzigen Datei mit dem Namen des Ordners zusammengefasst und, bei Erfolg, danach gelöscht werden.

Wegen der beiden "echo" in den Zeilen 9 und 10 werden diese Aktionen allerdings zunächst nur angezeigt - wenn die entsprechenden Befehle ok aussehen, kannst Du diese "echo" entfernen und den Batch damit "scharf" stellen.

Ich habe hier auch mal unterstellt, dass zum Zippen "7zip" verwendet werden soll - den Pfad in Zeile 3 müsstest Du an Deine Gegebenheiten anpasssen ...

Grüße
bastla

[Edit] %7z% (für ev Installationspfad mit enthaltenen Leerzeichen) unter Anführungszeichen gesetzt [/Edit]
Bitte warten ..
Mitglied: rubono
09.08.2012 um 09:56 Uhr
Hallo,

danke schon mal für die Hilfe
habe es jetzt so angepasst(wie mache ich die Zeilenansicht?):

@echo off & setlocal
set "Startordner=Y:\1__CURRENT"
set "7z=%C:\ProgramFiles%\7-zip\7z.exe"


for /d /r "%Startordner%" %%i in (*) do (
pushd "%%i"
echo Bearbeite "%%i"
if not exist "%%~ni.zip" (
echo %7z% a "%%~ni.zip" *.zip -mx0 && (
for /f "delims=" %%a in ('dir /b *.zip') do if /i "%%a" neq "%%~ni.zip" echo del "%%a"
)
)
popd
)
echo Fertig.

scheint aber falsch angepasst zu sein da ich diesen Fehler bekomme: the following usage of the path operator in batch paramert substitution is invalid: %~ni.zip" *.zip -mx0 && <

habe ich den Pfad für 7zip falsch angepasst?

Grüße rubono
Bitte warten ..
Mitglied: bastla
09.08.2012 um 10:06 Uhr
Hallo rubono!
habe ich den Pfad für 7zip falsch angepasst?
Yep - entweder verwendest Du die auch eigentlich dafür gedachte Systemvariable "%ProgramFiles%" (einfach einmal in einer CMD-Shell
set
eingeben, dann siehst Du nicht nur deren Inhalt, sondern auch, was es da noch so gibt), oder Du gibst den Pfad "hardcoded" an - dann aber ohne die Prozentzeichen ...

... und wenn Du schon am Bearbeiten des Batches bist, könntest Du zur Sicherheit auch noch in Zeile 9 %7z% unter Anführungszeichen setzen (ich hole das oben auch noch nach).

Grüße
bastla

P.S.: Schön, dass Du nach der "Code"-Formatierung fragst - Du findest sie hier beschrieben ...
Bitte warten ..
Mitglied: rubono
09.08.2012 um 10:28 Uhr
Hey bastla,

habe es jetzt so:

01.
@echo off & setlocal 
02.
set "Startordner=Y:\1__CURRENT" 
03.
set "%Program Files%\7-zip\7z.exe" 
04.
 
05.
 
06.
for /d /r "%Startordner%" %%i in (*) do ( 
07.
pushd "%%i" 
08.
echo Bearbeite "%%i" 
09.
if not exist "%%~ni.zip" ( 
10.
echo "%7z%" a "%%~ni.zip" *.zip -mx0 && ( 
11.
for /f "delims=" %%a in ('dir /b *.zip') do if /i "%%a" neq "%%~ni.zip" echo del "%%a" 
12.
13.
14.
popd 
15.
16.
echo Fertig.
bekomme aber immer noch diese Fehlermeldung
woran liegt das?

Grüße
rubono
Bitte warten ..
Mitglied: bastla
09.08.2012 um 10:53 Uhr
Hallo rubono!
woran liegt das?
Vor allem daran, dass es keine gute Idee war, eine Variable %7z% zu nennen (und das Weglassen des Variablennamens, wie in Deiner Zeile 3, macht's auch nicht besser ) - versuch es nochmal mit dieser Version:
01.
@echo off & setlocal 
02.
set "Startordner=D:\Oberordner" 
03.
set "ZIPProg=%ProgramFiles%\7-zip\7z.exe" 
04.
 
05.
for /d /r "%Startordner%" %%i in (*) do ( 
06.
    pushd "%%i" 
07.
    echo Bearbeite "%%i" 
08.
    if not exist "%%~ni.zip" ( 
09.
        echo "%ZIPProg%" a "%%~ni.zip" *.zip -mx0 && ( 
10.
            for /f "delims=" %%a in ('dir /b *.zip 2^>nul') do if /i "%%a" neq "%%~ni.zip" echo del "%%a" 
11.
12.
13.
    popd 
14.
15.
echo Fertig.
Grüße
bastla
Bitte warten ..
Mitglied: rubono
09.08.2012 um 11:09 Uhr
Hallo bastla,

jetzt funktioniert alles genau so wie es soll.
Vielen Dank !

Grüße

rubono
Bitte warten ..
Mitglied: rubono
09.08.2012 um 14:08 Uhr
Hallo noch mal,

noch eine kurze frage

wieso funktioniert es nicht mehr wenn ich den pfad so spezialisiere ?

01.
 @echo off & setlocal 
02.
set "Startordner=D:\Ordner\*bestimmteOrdnernamen" 
03.
set "ZIPProg=%ProgramFiles%\7-zip\7z.exe" 
04.
 
05.
for /d /r "%Startordner%" %%i in (*) do ( 
06.
    pushd "%%i" 
07.
    echo Bearbeite "%%i" 
08.
    if not exist "%%~ni.zip" ( 
09.
         "%ZIPProg%" a "%%~ni.zip" *.zip -mx0 && ( 
10.
            for /f "delims=" %%a in ('dir /b *.zip 2^>nul') do if /i "%%a" neq "%%~ni.zip" del "%%a" 
11.
12.
13.
    popd 
14.
15.
echo Fertig.
Grüße

rubono
Bitte warten ..
Mitglied: bastla
09.08.2012, aktualisiert um 15:35 Uhr
Hallo rubono!
wieso funktioniert es nicht mehr wenn ich den pfad so spezialisiere ?
Weil es dann keine gültige Pfadangabe ist - Du kannst es aber so versuchen:
01.
 @echo off & setlocal 
02.
set "Startordner=D:\Ordner" 
03.
set "ZIPProg=%ProgramFiles%\7-zip\7z.exe" 
04.
 
05.
for /d /r "%Startordner%" %%i in ("*bestimmteOrdnernamen") do ( 
06.
    pushd "%%i" 
07.
    echo Bearbeite "%%i" 
08.
    if not exist "%%~ni.zip" ( 
09.
         "%ZIPProg%" a "%%~ni.zip" *.zip -mx0 && ( 
10.
            for /f "delims=" %%a in ('dir /b *.zip 2^>nul') do if /i "%%a" neq "%%~ni.zip" del "%%a" 
11.
12.
13.
    popd 
14.
15.
echo Fertig.
Grüße
bastla
Bitte warten ..
Mitglied: rubono
09.08.2012 um 14:55 Uhr
Hallo bastla,

danke hat funktioniert

Grüße
rubono
Bitte warten ..
Mitglied: rubono
10.08.2012 um 08:58 Uhr
Hallo nochmal !,

ich muss leider noch einmal nerven :/.
Wie müsste ich die batch umschreiben um einfach alle Dateien zu zippen ? Egal ob sie .zip sind oder nicht.


Grüße

rubono
Bitte warten ..
Mitglied: bastla
10.08.2012 um 11:15 Uhr
Hallo rubono!

Du könntest ganz verwegen aus den beiden "*.zip" einfach "*.*" machen ...

Grüße
bastla
Bitte warten ..
Mitglied: rubono
10.08.2012 um 11:40 Uhr
Hey bastla,

ohje ich Idiot hab den stern vor dem punkt vergessen :D

Grüße

rubono
Bitte warten ..
Mitglied: rubono
10.08.2012 um 14:35 Uhr
Hallo Bastla,

Jetzt löscht es die Dateien jedoch nicht mehr
Ich muss jetzt ausserdem in dem Ordner "bestimmterOrdnername" in alle Unterordner rein dann dort die Dateien in den jeweiligen Unterordnern zippen und den Ordner löschen.
ich war so froh fertig zu sein und bin jetzt wieder mal ratlos.
Vielleicht kannst du mir ja noch einmal helfen

Grüße

rubono
Bitte warten ..
Mitglied: bastla
10.08.2012 um 15:23 Uhr
Hallo rubono!
Jetzt löscht es die Dateien jedoch nicht mehr
Du hast beide *.zip durch *.* ersetzt?
Ich muss jetzt ausserdem in dem Ordner "bestimmterOrdnername" in alle Unterordner rein dann dort die Dateien in den jeweiligen Unterordnern zippen und den Ordner löschen.
Sorry, verstehe ich nicht - welcher Ordner soll gelöscht werden?

Grüße
bastla
Bitte warten ..
Mitglied: rubono
10.08.2012 um 15:52 Uhr
Hallo bastla,

Ja habe ich und habe meine Fehler schon gefunden da es Ordner waren musste ich rd verwenden anstatt del

Es soll der Unterordner aus welchem man die Dateien zippt gelöscht werden.

Grüße

rubono
Bitte warten ..
Mitglied: bastla
10.08.2012 um 16:05 Uhr
Hallo rubono!
Es soll der Unterordner aus welchem man die Dateien zippt gelöscht werden.
Dann muss aber die zip-Datei im Startordner gespeichert werden, um nicht mit dem Unterordner gelöscht zu werden - ungetestet etwa:
01.
@echo off & setlocal 
02.
set "Startordner=D:\Ordner\bestimmteOrdnernamen" 
03.
set "ZIPProg=%ProgramFiles%\7-zip\7z.exe" 
04.
 
05.
pushd "%Startordner%" 
06.
for /d %%i in (*) do ( 
07.
    echo Bearbeite "%%i" 
08.
    if not exist "%%~ni.zip" "%ZIPProg%" a "%%~ni.zip" "%%i\*.*" && rd "%%i" 
09.
10.
popd 
11.
echo Fertig.
Das funktioniert so nur für eine Unterordnerebene ...

Grüße
bastla
Bitte warten ..
Mitglied: rubono
13.08.2012 um 09:46 Uhr
Hallo bastla,

ja genau das hab ich gemeint.
Vielen Dank.

Grüße
rubono
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch nach bestimmten Ordner suchen und diese zippen
gelöst Frage von windelterroristBatch & Shell3 Kommentare

Hallo! Ich stehe mit Batch gerade etwas an Bitte um Verständnis, wenn ich das ein oder andere falsch formuliere, ...

Batch & Shell
Automatisch dateien die sich in einem Ordner befinden, zippen
Frage von cdm1970Batch & Shell6 Kommentare

Hallo, ich habe folgende Frage: Ich habe in mehrere Ordner sehr viele .html Dateien für unsere Online Shop. Ich ...

Batch & Shell
Dateien mit fast gleichem Namen per Batch zippen
Frage von tiolocoBatch & Shell5 Kommentare

hallo, ich bin neu hier und ein absoluter laie was solche dinge betrifft. hab auch versucht evtl. eine lösung ...

Batch & Shell
Batch xkopie von Ordner in Ordner
gelöst Frage von TicTakTeoBatch & Shell3 Kommentare

muss kein xkopie befehl sein wenn was anderes geht. Ich möchte das bei eienem minecraft server die welt/map kopiert ...

Neue Wissensbeiträge
DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 StundenDSL, VDSL

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 2 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 5 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...