Autoentpacker für RAR/ZIP (Win11)
#1
geschrieben 24. April 2022 - 09:56
Es gibt Download Tools, die das mit geladenen Dateien machen, aber meine Archive stammen aus anderen Quellen. Der zu überwachende Ordner ist ein Netzwerkspeicher im lokalen Netzwerk und ändert sich nicht.
Anzeige
#3
geschrieben 26. April 2022 - 23:16
Überwache ein Verzeichnis alle X Minuten, prüfe auf Dateien mit Dateiendung .rar,.zip,usw., und entpacke diese automatisch
#4
geschrieben 27. April 2022 - 14:25
#5
geschrieben 27. April 2022 - 19:01
ich hab mich gestern an einem powershell-script versucht, scheitere aber bisher an der 7z.exe syntax fuer den ziel-ordner - und unrar.exe / unzip.exe koennen offenbar nicht beide formate, hab dann frustriert aufgegeben
#$path_incoming austauschen, unten den pfad von 7z.exe austauschen, ebenso den C:\test\extracted # Ordner der ueberwacht wird $path_incoming = 'C:\test\incoming\' # Dateifilter $filter = '*.zip' # --------- if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return} Unregister-Event -SourceIdentifier FileCreated -EA 0 $fsw = New-Object IO.FileSystemWatcher $path_incoming, $filter -Property @{IncludeSubdirectories = $false;NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'} Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action { $fullpath = $Event.SourceEventArgs.FullPath $timeStamp = $Event.TimeGenerated Write-Host "Die Datei '$fullpath' wurde um '$timeStamp' erstellt.`nStarte Entpackvorgang...`n" -fore green -NoNewline try{ Start-Process -FilePath C:\test\7z.exe -ArgumentList "x $fullpath -oC:\test\extracted\" write-host "Entpacken beendet." -F Green # loesche Archiv # remove-item $fullpath -Force }catch{ write-host "Error: $($_.Exception.Message)" -f Red } } cls write-host "Warte auf neue Dateien im Ordner ..." while($true){sleep 1}
Dieser Beitrag wurde von CaNNoN bearbeitet: 27. April 2022 - 20:45
#6
geschrieben 27. April 2022 - 19:28
2. Archiv soll wie hinterlegt entpackt werden (>95% der Archive besitzen bereits eine saubere Ordnerstruktur)
3. Nach dem Entpacken kann das Archiv gelöscht werden.
4. Fehlermeldungen etc. bei Problemen wären schön, aber kein Muss. Ich habe fast nie Probleme mit den Archiven.
#7
geschrieben 27. April 2022 - 20:48
jedenfalls:
die 7z.exe bekommst du aus dem installationspfad von 7zip.
es stellte sich heraus, dass IO.FileSystemWatcher immer nur einen filter akzeptiert - man muesste den also auf *.* setzen und dann den fullpath gegenchecken ob die endung *.zip oder *.rar ist, damit er bei beiden endungen triggert.
meine powershell-skills sind leider auch nicht das gelbe vom ei, aber vllt. kann ja jemand mit der basis etwas anfangen :-)
#8
geschrieben 27. April 2022 - 21:35
# Programm 7-Zip muss im Ordner c:\Program Files\7-Zip\7z.exe vorhanden sein, oder Variable 7ZipPath anpassen! $7ZipPath = "c:\Program Files\7-Zip\7z.exe" $Pfad = "C:\tmp\test" $AlleEndungen=@("*.zip","*.7z","*.rar") #Endlos Schleife: while($true) { write-host "Check Verzeichnis $Pfad" foreach($Endung in $AlleEndungen) { write-host "Check Dateiendung $Endung" $AlleDateien = gci -Path $Pfad -Filter $Endung foreach($D in $AlleDateien) { $Datei = $D.fullname $Zielpfad = "-o" + $D.DirectoryName + "\" + $D.BaseName write-host "Datei gefunden $Datei" #Archiv Datei mit 7-zip entpacken in Verzeichnis, das wie die Archiv Datei heisst: cmd /c $7ZipPath e $Datei $Zielpfad -r #Archiv Datei löschen: Remove-Item -Path $Datei -Force } } write-host "Schleifen Durchgang fertig!" #warte write-host "Warte auf nächsten Durchgang" Start-Sleep -Seconds 300 }
Auch ich hatte eben noch hier eine ellenlange Beschreibung geschrieben, aber das kack Forum hat den Post gefressen.
@Cannon:
Dein Ablauf bringt mich auch auf coole neue Ideen, danke für deine Lösung.
Dieser Beitrag wurde von Stef4n bearbeitet: 27. April 2022 - 21:37
#9
geschrieben 27. April 2022 - 23:32
Zitat
scheint wohl powershell nicht zu moegen - oder es hakt mal wieder generell.
Zitat
Dein Ablauf bringt mich auch auf coole neue Ideen, danke für deine Lösung.
das zeug stammt eigentlich aus einem anderen script das ich letztens gebastelt hab - hab so ein altes fax das faxe zwar via software digital speichern, aber nicht via mail versenden kann. die software laeuft nun am server und das script prueft auf erstellung einer pdf im zielordner und schickt dann eine mail mit absendernummer und speicherort
Zitat
ich hab das auf teufel komm raus nicht geschafft den -o parameter als variable zu uebergeben, die syntax is schon ein bisschen grausig bei 7zip
#10
geschrieben 28. April 2022 - 22:56
Zitat (CaNNoN: 27. April 2022 - 23:32)
Ja grausig ist richtig, aber dafür ist das Tool grandios.
Ich mache im Job gescriptete Archivierung von zT. 50 Gigabyte Log Dateien pro Tag und packe die auf einen Bruchteil der Größe für längerfristige Aufbewahrung. Das ist großartig und ein enormer Funktionsgewinn anstatt jeden Tag die Logs löschen zu müssen, um Plattenplatz zu sparen.
Deine Try Catch Lösung mit Start-process werde ich mal im Auge behalten. Hat gegenüber meiner Lösung den Vorteil Fehler Abfangen zu können, wenn das Script auch in den Catch Zweig reinlaufen würde.
#11
geschrieben 28. April 2022 - 23:35
Wenn wenn das für euch eine glücklich machende Herausforderung ist, vllt mögt ihr euch ja auch meinem alten Anliegen annehmen...
#12
geschrieben 01. Mai 2022 - 00:00
#13
geschrieben 01. Mai 2022 - 17:47
#14
geschrieben 01. Mai 2022 - 21:08
#15
geschrieben 01. Mai 2022 - 23:43
Wobei, ist der Screenshot überhaupt aus MacGyver?
Wegen der Uniform tippe ich mal eher auf Stargate.
Edit: Ne aus Stargate is' es auch nicht. Die Uniformen schauen anders aus.
Dieser Beitrag wurde von Ler-Khun bearbeitet: 01. Mai 2022 - 23:47