Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Alle Zip dateien einer Verzeichnisses entpacken (mit Borardmitteln)

Frage Entwicklung VB for Applications

Mitglied: thomas1972

thomas1972 (Level 1) - Jetzt verbinden

27.04.2013 um 07:56 Uhr, 3846 Aufrufe, 9 Kommentare, 3 Danke

Hallo, ich möchte alle Zip Dateien eines Verzecihnisses mit Windows Bordmitteln entpacken

dazu hatte BASLA einen Code für eine einzelne Datei

01.
@echo off & setlocal 
02.
set "Quelle=D:\Ein.zip" 
03.
set "Ziel=D:\Entpackt" 
04.
 
05.
if not exist "%Ziel%\" md "%Ziel%" 2>nul||echo Zielordner "%Ziel%" konnte nicht erstellt werden! & goto :eof 
06.
 
07.
set "U=%temp%\Unzip.vbs" 
08.
>"%U%" echo CreateObject("Shell.Application").Namespace("%Ziel%").CopyHere CreateObject("Shell.Application").Namespace("%Quelle%").Items, 4 + 16 
09.
cscript //nologo "%U%"
lasse ich die Endung weg entpackt er leider immer noch nicht alle Dateien eines Verzeichnisses.
Wo muss hier ien Loop oder ähnl. eingebunden werden?
Mitglied: Dobby
27.04.2013 um 11:21 Uhr
Hallo,

kann hier der Fehler Liegen?
set "Quelle=D:\Ein.zip"

Sollte das nicht *.zip sein um alle gepackten Dateien zu entpacken?

Ich meine ich kann keinen Code schreiben aber wäre das eventuell eine Möglichkeit?

Gruß
Dobby
Bitte warten ..
Mitglied: bastla
27.04.2013 um 11:46 Uhr
Hallo thomas1972 und D.o.b.b.y!

Der Code war ja tatsächlich nur für eine Datei gedacht - daher etwa so:
01.
@echo off & setlocal 
02.
set "Quelle=D:\" & REM Quellordner mit abschließendem "\" schreiben 
03.
set "Ziel=D:\Entpackt" 
04.
 
05.
if not exist "%Ziel%\" md "%Ziel%" 2>nul||echo Zielordner "%Ziel%" konnte nicht erstellt werden! & goto :eof 
06.
 
07.
set "U=%temp%\Unzip.vbs" 
08.
>"%U%" echo CreateObject("Shell.Application").Namespace(WScript.Arguments(1)).CopyHere CreateObject("Shell.Application").Namespace(WScript.Arguments(0)).Items, 4 + 16 
09.
for %%i in ("%Quelle%*.zip") do cscript //nologo "%U%" "%%i" "%Ziel%"
Grüße
bastla
Bitte warten ..
Mitglied: thomas1972
27.04.2013 um 16:51 Uhr
Hallo Bastla,

vielen Dank für die Rückmeldung.
Besteht die Möglichkeit dieses eigentlich auch in VBA ähnlich umzusetzen?.
Problem habe ich nur ,dass die Dateinamen selber keine entdung ZIP haben (umbennen nicht möglich, da die Dateien doppelt gepackt sind und windows dann die dateie nicht mehr richtig erkennt, doppelzip wird aufgehoben und es wird nur eine Datei angezeigt)
Im Moment habe ich mit mit 7za per Batch beholfen. Wollte aber alles in einem VBA Script haben
Bitte warten ..
Mitglied: Biber
27.04.2013 um 21:20 Uhr
[OT]
Zitat von thomas1972:
...(umbennen nicht möglich, da die Dateien doppelt...
Umbennen finde ich auch unmöglich, ist aber im Forum sehr beliebt... *seufz*

Set /a rgc+=1
#883

Grüße
Biber
[/OT}
Bitte warten ..
Mitglied: bastla
27.04.2013, aktualisiert um 22:06 Uhr
Hallo thomas1972!
Problem habe ich nur ,dass die Dateinamen selber keine entdung ZIP haben
Wollte aber alles in einem VBA Script haben
Welche Informationen wolltest Du dann als nächstes nachliefern? Beschreibe bitte konkret, was Du hast und was Du erreichen willst ...

Falls es übrigens tasächlich so sein sollte, dass eine .zip-Datei Inhalt einer weiteren .zip-Datei (die aber einen anderen Dateityp hat) ist, sollte es mit dem Umbenennen Letzterer auf .zip und anschließendem Entpacken per Script eigentlichen klappen - und da der entscheidende Teil des Scripts ja jetzt schon per VB(S) erledigt wird, ginge das dann ziemlich sicher auch per VBA ...

Grüße
bastla
Bitte warten ..
Mitglied: Dobby
27.04.2013 um 22:37 Uhr
Hallo nochmal,

Problem habe ich nur ,dass die Dateinamen selber keine entdung ZIP haben
Wieso soll dann der Code eine Datei ansprechen die auf .zip endet?

Meines Erachtens nimmst Du einfach was @bastla Dir geschrieben hat und macht nur einen Schritt in
der Ausführung mehr und das war es dann auch schon.

Also alle Dateien *.zip im Ordner 1 entpacken nach Ordner 2

und dann im zweiten Schritt

Alle Dateien *.zip in dem Ordner 2 entpacken nach Ordner 3

So dann hast Du alles entpackt ob das nun doppelt oder dreifach ist ist ja eigentlich egal man kann den
Schritt ja beliebig erweitern, aber eine Protokolldatei mit dem aktuellen Datum als Namen würde ich mir
an Deiner Stelle immer zusätzlich schreiben lassen in einen Ordner der Protokoll heißt und dann
wenn alle Deine Dekompressionen abgeschlossen sind würde ich ein zweites Script starten lassen was Dir
die Protokolldatei durchsucht und eventuelle Fehler oder den glatten Vollzug meldet und sich immer
am neuesten Datum orientiert.

Gruß
Dobby
Bitte warten ..
Mitglied: colinardo
28.04.2013, aktualisiert 20.05.2013
Zitat von thomas1972:
Besteht die Möglichkeit dieses eigentlich auch in VBA ähnlich umzusetzen?.
Problem habe ich nur ,dass die Dateinamen selber keine entdung ZIP haben (umbennen nicht möglich, da die Dateien doppelt
gepackt sind und windows dann die dateie nicht mehr richtig erkennt, doppelzip wird aufgehoben und es wird nur eine Datei
angezeigt)
Im Moment habe ich mit mit 7za per Batch beholfen. Wollte aber alles in einem VBA Script haben

Hallo Thomas,
folgender VBA-Code sollte Dir bei deinem Vorhaben weiterhelfen. Er entpackt in einem weiteren Schritt alle im ersten ZIP enthaltenen weiteren ZIP-Dateien.
Die Variablen lassen sich oben im Script anpassen.
01.
'========Variablen für Anpassung ======= 
02.
'Ordner in dem die Dateien liegen 
03.
STARTFOLDER = "C:\temp\zip" 
04.
'Entpackordner 
05.
TARGETFOLDER = "C:\temp\unzip" 
06.
'Erweiterung der Dateien 
07.
FILETYPE = "zip" 
08.
'Auch Dateien in Unterordnern bearbeiten 
09.
RECURSION = False 
10.
'======================================= 
11.
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 
12.
Set shell = CreateObject("Shell.Application") 
13.
Set WshShell = WScript.CreateObject("Wscript.Shell") 
14.
TEMPFOLDER = wshshell.ExpandEnvironmentStrings("%temp%") & "\ZipInZip" 
15.
If Not fso.FolderExists(TEMPFOLDER) Then fso.CreateFolder TEMPFOLDER 
16.
Set PROCESSFOLDER = fso.GetFolder(STARTFOLDER) 
17.
parseFolders PROCESSFOLDER,RECURSION 
18.
 
19.
 
20.
Function parseFolders(strFldr,boolRecursion) 
21.
	For each file in strFldr.Files 
22.
		If LCase(Right(file.Name,3)) = LCase(FILETYPE) Then 
23.
			Set zipfileitems = shell.NameSpace(file.Path).Items 
24.
			For Each f In zipfileitems 
25.
				If LCase(Right(f.Name,3)) = "zip" Then 
26.
					shell.NameSpace(TEMPFOLDER).CopyHere f, 4+16 
27.
					shell.NameSpace(TARGETFOLDER).CopyHere shell.NameSpace(TEMPFOLDER & "\" & f.Name).Items , 4+16 
28.
					fso.DeleteFile TEMPFOLDER & "\" & f.Name 
29.
				Else 
30.
					shell.NameSpace(TARGETFOLDER).CopyHere f, 4+16 
31.
				End If 
32.
			Next 
33.
		End If	 
34.
	Next 
35.
	 
36.
	If boolRecursion Then 
37.
		For Each subFolder in strFldr.SubFolders 
38.
			parseFolders subFolder, True 
39.
		Next 
40.
	End If 
41.
End Function 
42.
 
43.
Set fso = Nothing 
44.
Set shell = Nothing 
45.
Set wshshell = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: thomas1972
19.05.2013 um 08:26 Uhr
Hallo Use,

danke für dein Scrip, hilft mir auf jedenfall deutlich weiter.
Besteht die Möglichkeit in diesem Script noch einzubauen, dass, sobald die erste Zip Datei entpackt wurde, diese dann im Anschluss zu löschen?

Hintergrund

Die Dateien sollen im gleichen Ordner entpackt werden, sollte STARTFOLDER = TARGETFOLDER sein, würde er in einer Schleife bleiben

Daher die Frage ob es möglich ist

entpacke Datei1 -> Datei2 & Datei3
lösche Datei1
entpacke dann erst Datei2 & Datei3 ect..


Für eine nochmalige Hilfe wäre ich dankbar
Bitte warten ..
Mitglied: colinardo
20.05.2013 um 11:00 Uhr
Hallo Thomas,
Das sollte passen ...
01.
'========Variablen für Anpassung ======= 
02.
'Ordner in dem die Dateien liegen 
03.
STARTFOLDER = "C:\Temp\zip" 
04.
'Entpackordner 
05.
TARGETFOLDER = "C:\Temp\zip" 
06.
'Erweiterung der Dateien 
07.
FILETYPE = "zip" 
08.
'Quellzip löschen 
09.
DELETESRC = True 
10.
'Auch Dateien in Unterordnern bearbeiten 
11.
RECURSION = False 
12.
'======================================= 
13.
Set fso = WScript.CreateObject("Scripting.Filesystemobject") 
14.
Set shell = CreateObject("Shell.Application") 
15.
Set WshShell = WScript.CreateObject("Wscript.Shell") 
16.
TEMPFOLDER = wshshell.ExpandEnvironmentStrings("%temp%") & "\ZipContents" 
17.
If Not fso.FolderExists(TEMPFOLDER) Then fso.CreateFolder TEMPFOLDER 
18.
Set PROCESSFOLDER = fso.GetFolder(STARTFOLDER) 
19.
parseFolders PROCESSFOLDER,RECURSION 
20.
 
21.
Function parseFolders(strFldr,boolRecursion) 
22.
	counter = 0 
23.
	Set oDic = CreateObject("Scripting.dictionary") 
24.
	For Each file In strFldr.Files 
25.
		If LCase(Right(file.Name,3)) = LCase(FILETYPE) Then 
26.
			Set zipfileitems = shell.NameSpace(file.Path).Items 
27.
			For Each f In zipfileitems 
28.
				If LCase(Right(f.Name,3)) = "zip" Then 
29.
					shell.NameSpace(TEMPFOLDER).CopyHere f, 4+16 
30.
					shell.NameSpace(TARGETFOLDER).CopyHere shell.NameSpace(TEMPFOLDER & "\" & f.Name).Items , 4+16 
31.
					fso.DeleteFile TEMPFOLDER & "\" & f.Name 
32.
				Else 
33.
					shell.NameSpace(TARGETFOLDER).CopyHere f, 4+16 
34.
				End If 
35.
			Next 
36.
			counter = counter + 1 
37.
			oDic.Add counter, file.Path 
38.
		End If	 
39.
	Next 
40.
	If DELETESRC = True Then	 
41.
		colKeys = oDic.Keys 
42.
		For Each strKey in colKeys 
43.
		    fso.DeleteFile oDic.Item(strKey) 
44.
		Next 
45.
	End If 
46.
	 
47.
	If boolRecursion Then 
48.
		For Each subFolder in strFldr.SubFolders 
49.
			parseFolders subFolder, True 
50.
		Next 
51.
	End If 
52.
End Function 
53.
 
54.
Set fso = Nothing 
55.
Set shell = Nothing 
56.
Set wshshell = Nothing
Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Windows Server
Server sehr langsam bei vielen kleinen Dateien (5)

Frage von MichiBLNN zum Thema Windows Server ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...