pytrelooc
Goto Top

Batch und 7Zip

Hallo face-smile,

ich habe folgendens Problem und hoffe mir kann jemand helfen es zu lösen: ich habe die Aufgabe in einem Ordner welcher mehrere Unterordner hat welche wiederum Unterordner haben (und so weiter) alle Ordner mit dem Namen "bios" zu finden und in diesen "bios-Ordnern" alle darin enthaltenen Dateien/Ordner usw. abgesehen von zip-Dateien einzeln zu zippen und die Ordner oder Dateien von welchen es nun eine zip-Datei gibt zu löschen.
Das alles soll in batch geschrieben werden.

Ich hoffe mir kann jemand helfen und bedanke mich schonmal dafür face-smile

Mit freundlichen Grüßen

pytrelooc

Content-Key: 191786

Url: https://administrator.de/contentid/191786

Printed on: April 19, 2024 at 06:04 o'clock

Mitglied: 60730
60730 Sep 25, 2012 at 09:13:53 (UTC)
Goto Top
Moin,

Das alles soll in batch geschrieben werden.

dann leg mal vor und wir helfen nach...
Member: SlainteMhath
SlainteMhath Sep 25, 2012 at 09:24:30 (UTC)
Goto Top
Moin,

3 Tipps gibts von mir gratis dazu face-smile

1. http://ss64.com/nt/
2. 7z /?
3. Hier im Forum gibt es ein gutes Batch Tutorial.

lg,
Slainte
Member: pytrelooc
pytrelooc Sep 25, 2012 at 09:53:55 (UTC)
Goto Top
Moinsen,

also ich bin bis jetzt soweit gekommen:
setlocal
set "Startordner=U:\1__CURRENT"  
for /d /r "%Startordner%" %%i in ("*bios") do "C:\Program Files\7-Zip\7z.exe" a -m0=lzma2 "%%~i.7z" "%%~i"  


jedoch zippt es damit schon den Bios-Ordner und dann noch die Ordner im Bios-Ordner (welche jedoch alle zusammen in eine .zip-Datei gezippt werden und nicht jeder einzeln für sich), es soll jedoch nur die Ordner bzw Dateien im Bios-Ordner zippen und diese auch so nennen wie die gezippten Dateien/Ordner heissen die gezippt werden.
Vielleicht könnt ihr mir helfen face-smile

Grüße

pytrelooc
Member: pytrelooc
pytrelooc Sep 25, 2012 at 12:46:30 (UTC)
Goto Top
Huhu face-smile,

bin nochmal weitergekommen aber kenne mich mit if abfragen nicht aus

@echo off & setlocal
set "Ordner=D:\1__CURRENT\"  
set "Subordner=bios"  

for /f "delims=" %%i in ('dir /s/b/ad "%Ordner%%Subordner%"') do (  
    for /d %%a in ("%%i\*") do (  
         7z a -t7z "%%i\%%~nxa.zip" "%%a\*.*" -r && rd /s/q "%%a"  
    )
)

wenn die Batch eine .zip-Datei findet soll sie diese überspringen und keine Fehlermeldung(welche auf Grund von rd kommt) bringen und abbrechen.
wie mache ich das ?

Grüße

pytrelooc
Member: pieh-ejdsch
pieh-ejdsch Sep 25, 2012 at 16:20:05 (UTC)
Goto Top
moin pytrelooc,

die Option /Directory listet nun mal nur Ordner auf.
Wenn Du der For nicht den richtigen Ordner als Wurzel gibst wird er mit gelistet.
Der/die Ordner mit Namen Bios werden aber so aufgelistet.
for /d /r "D:\Verzeichnis\Ab hier" %i in (Bios.?) do @echo %i
Wenn Bios schon verpackt ist - gibt es in der Unterstucktur nochmal Bios?
Wenn ja warum wird nochmal Rekursiv nach den Ordnern Bios gesucht?

So wie Deine Beschreibung mit dem einzelnen Einpacken der Dateien ist, passt es nicht mit dem Code zusammen.

als Test in der CMD-Line:
for /d /r "D:\Verzeichnis\Ab hier" %i in (Bios.?) do @for /f "delims=" %a in (' dir /b "%i\*" ^|findstr /veic:".7z" ') do @echo 7z a -t7z "%~a.7z" "%~a" && (echo rd /s /q "%~i" || echo del "%~i")  


Gruß Phil