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
GELÖST

Email-Anhang per batch-Datei in bestimmten Ordner entzippen

Frage Microsoft

Mitglied: woho2010

woho2010 (Level 1) - Jetzt verbinden

09.02.2011 um 16:49 Uhr, 7607 Aufrufe, 19 Kommentare

Hallo!
Bin ziemlicher newbie bei batch-Programmierung. Ich hoffe, ihr könnt mir helfen. Ich arbeite mit Windows 7 bzw. XP, habe VBA-Kenntnisse für ACCESS.

Ich muss eine gezippte Datei, die ein email-Anhang ist, in einen bestimmten Ordner am PC entzippen. Dies alles soll per Doppelklick auf den email-Anhang (umsatz.hbm = zip-Datei) passieren. Meine Vorstellung ist, dass ich die Batch-Datei z.B. im Windows-Ordner ablege und die Datei-Endung "hbm" mit der Batch-Datei standardmäßig verknüpfe, sodass beim Doppelklicken auf den Anhang der Vorgang ausgelöst wird. Das Entzippen soll möglichst mit Windows-Bordmitteln (expand) passieren.

Habe bereits eine Batch-Datei entwickelt, die mit der aus der email heraus in den Ordner gespeicherten Datei umsatz.hbm funktioniert:

expand *.hbm [Mein Pfad]\umsatz.txt
del *.hbm

Was nicht funktioniert, ist das entzippen als email-Anhang direkt in den Ordner. Hier sollte der Zwischenschritt des Speicherns des Anhanges vermieden werden.

Könnt ihr mir helfen?
Mitglied: Skyemugen
09.02.2011 um 16:57 Uhr
Aloha,

expand ... hm wenn ich mich nicht irre, wird es in diesem Fall gar nichts bewirken (für's Extrahieren von .zip-Dateien z.B. ist .vbs die einzige onboard-Lösung, bin ich der Meinung - aber ob das mit .hbm auch klar kommt?).

Noch etwas: Wenn der Anhang als Zwischenschritt im %temp% gespeichert werden würde, was würde deiner Meinung nach dagegensprechen?

greetz Morrow
Bitte warten ..
Mitglied: woho2010
09.02.2011 um 17:29 Uhr
Danke für deine Antwort. Zu deiner Info: der Anhang hbm ist keine Endung im eigentlichen Sinn, es ist eigentlich eine zip-Datei. Hbm wurde nur willkürlich als Endung gewählt. Wie funktioniert vbs?
Nein, es würde auch nichts dagegen sprechen, im Temp-Verzeichnis zwischenzuspeichern - aaaber . . .wie geht das :D
Bitte warten ..
Mitglied: bastla
09.02.2011 um 20:31 Uhr
Hallo woho2010 und willkommen im Forum, hallo Skyemugen!

Nur per Drag & Drop getestet:
01.
@echo off & setlocal 
02.
set "ZIP=%temp%\%~n1.zip" 
03.
copy %1 "%ZIP%">nul 
04.
set U=%temp%\Unzip.vbs 
05.
>%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("%~dp1").CopyHere App.Namespace("%ZIP%").Items 
06.
cscript //nologo %U% 
07.
del "%ZIP%"
Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
09.02.2011 um 22:26 Uhr
Aloha bastla!

WIe ich sehe, haste den code von letztens und so ;) ja bereits c&p, hab derzeit andere Dinge am Hut und komme irgendwie zu gar nichts mehr außer mal eben very fix 'nen Satz zu verfassen ^.^

greetz André

edit: lol falsche Grußformel, haha falsches Forum ^.^
Bitte warten ..
Mitglied: bastla
09.02.2011 um 22:32 Uhr
Hallo Skyemugen!
den code von letztens und so ;) ja bereits c&p
Nicht ganz - ist noch etwas komprimierter (was ja zum Thema passt ) ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
09.02.2011 um 22:57 Uhr
Aloha again ^.^

ja das sah ich auch :P aber es gibt halt kein c&p&d, hehe.

greetz André
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 09:20 Uhr
Danke für die schnelle Antwort.

Habe nun eine "Unzip.vbs" im Temp-Ordner.

Wie geht es weiter? Die Datei soll nun in die Datei "Umsatz.txt" in den Pfad "D:\Access\Datenbank\" entzippt werden. Habe den Verdacht, dass dies mit den Zeilen ">%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("%~dp1").CopyHere App.Namespace("%ZIP%").Items" und "cscript //nologo %U% " zu tun hat. Stimmt's? Bitte helft mir Unbedarften noch einmal! Was bedeuten diese Zeilen?

Lg Wolfgang
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 10:06 Uhr
Aloha,

>%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("%~dp1").CopyHere App.Namespace("%ZIP%").Items 
Hiermit wird per echo-Befehl der eigentliche Inhalt zum Entzippen in die Unzip.vbs geschrieben (ohne ihn, wäre das Skript sonst leer)
%~dp1 erweitert %1 (normaler Parameter) zu einem Laufwerksbuchstaben und Pfad
%~n1 (im %ZIP% hinterlegt) extrahiert den Dateinamen von %1 ohne Erweiterung
csrcipt //nologo %U% macht nichts anderes als die Unzip.vbs auszuführen, ohne dabei das übliche Logo einzublenden

Das Skript ist momentan für drag&drop der zu entpackenden Datei ausgelegt und du willst jetzt, dass direkt deine Datei aus dem Anhang noch beim Öffnen sozusagen aus dem email-Programm mit dem Skript nach einem vordefiniertem Verzeichnis entpackt wird, sehe ich das richtig?

greetz André
Bitte warten ..
Mitglied: bastla
10.02.2011 um 10:40 Uhr
Hallo woho2010!

Ich hatte die Anforderung so interpretiert, dass der Ordner, in welchem die ".hbm"-Datei liegt, auch als Ziel für das Entpacken verwendet werden sollte. Wenn das Ziel per absolutem Pfad vorgegeben werden soll, wäre die Zeile 5 auf
>%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("D:\Access\Datenbank\").CopyHere App.Namespace("%ZIP%").Items
zu ändern.
Habe nun eine "Unzip.vbs" im Temp-Ordner.
Das lässt sich ändern, indem Du am Ende des Batches noch ein
del %U%
ergänzt.
Was bedeuten diese Zeilen?
Damit wird ein (temporäres) VBScript erstellt, das gezielt für die übergebene Datei das Entpacken unter Verwendung der Windows-eigenen ZIP-Verarbeitung durchführt ...

Grüße
bastla
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 10:44 Uhr
Yepp! Langsam wird mir manches klarer! Hast du hier den richtigen Code für mich?
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 10:54 Uhr
Danke auch für deine Hinweise!

Wie bereits bei André oben beschrieben, soll die Datei direkt aus dem email-Anhang in den Ordner entzippt werden.

Lg Wolfgang
Bitte warten ..
Mitglied: bastla
10.02.2011 um 11:09 Uhr
Hallo woho!
Meine Vorstellung ist, dass ich die Batch-Datei z.B. im Windows-Ordner ablege und die Datei-Endung "hbm" mit der Batch-Datei standardmäßig verknüpfe
Die Batch-Datei solltest Du (falls sie auch bei Dir funktioniert) ja damit bereits haben, und wenn Du sie (mittels Datentyp-Verknüpfung) mit Übergabe des Pfades nach dem Muster
"%windir%\Unzip_hbm.cmd" %1
startest, sollte das klappen ...

Grüße
bastla
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 11:54 Uhr
Hallo Bastla!

Habe die Batch-Datei über Windows "Öffnen mit" verknüpft, sie wird auch ausgeführt, habe auch lt. der Empfehlung von André den Pfad wie folgt in die Programmzeile eingefügt: ">%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("D:\Access\Datenbank\").CopyHere App.Namespace("%ZIP%").Items"; nur erscheint derzeit noch keine "Umsatz.txt" Datei im Ordner "D:\Access\Datenbank".

Lg

Wolfgang
Bitte warten ..
Mitglied: bastla
10.02.2011 um 12:14 Uhr
Hallo woho2010!
Habe die Batch-Datei über Windows "Öffnen mit" verknüpft
... und ihr auch den Parameter %1 übergeben?
Zum Testen könntest du das "echo off" in ein "echo on" ändern und als neue letzte Zeile
pause
hinzufügen ...

Grüße
bastla
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 14:33 Uhr
Lieber bastla!

Komme noch nicht klar. Wie kann ich der Batch-Datei die parameter übergeben? Übrigens heißt die Batch-Datei bei mir "extract.bat" und steht im Windows-Verzeichnis.

Habe nun folgenden Code in dieser Datei:

@echo off & setlocal



set "ZIP=%temp%\%~n1.zip"

copy %1 "%ZIP%">nul

set U=%temp%\Unzip.vbs

>%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("D:\Acc_anw\SONSTIGE\umsatz.txt").CopyHere App.Namespace("%ZIP%").Items

cscript //nologo %U%

del "%ZIP%"
del %U%

Ich bekomme folgende Fehlermeldung:

Fehler in Microsoft VB-Script. Objekt erforderlich in App.namespace(...)

Anscheinend liegts am fehlenden Objekt. Grrr.

Irgendeine Idee?

Lg Wolfgang

P.S. Habe bemerkt, dass bei Erstellen der "Umsatz.zip"-Datei ein Fehler vorhanden ist. Fehlermeldung, wenn ich die Umsatz.zip im Ordner "temp" öffnen möchte: "Fehler in gepackter Datei c:\temp\umsatz.zip!"
Zip-Datei ist anscheinend nicht lesbar.
Bitte warten ..
Mitglied: bastla
10.02.2011 um 15:04 Uhr
Hallo woho2010!
Wie kann ich der Batch-Datei die parameter übergeben? Übrigens heißt die Batch-Datei bei mir "extract.bat"
So, wie ich das oben am Beispiel der "Unzip_hbm.cmd" dargestellt habe (es ist übrigens keine gute Idee, Batch-Dateien wie CMD-Befehle zu benennen) ...
Fehler in Microsoft VB-Script. Objekt erforderlich in App.namespace(...)
Auf jeden Fall nur den Pfad zum Zielordner - also "D:\Acc_anw\SONSTIGE\" - angeben ...

Grüße
bastla
Bitte warten ..
Mitglied: woho2010
10.02.2011 um 15:36 Uhr
So, wie ich das oben am Beispiel der "Unzip_hbm.cmd" dargestellt habe (es ist übrigens keine gute Idee,
Batch-Dateien wie CMD-Befehle zu benennen) ...

Das verstehe ich nicht, wie bzw. wo soll ich diese Parameterdefinition einbauen? Bedeutet das, dass ich die extract.bat-Datei umbenennen soll in z.B. "unzip_hbm.cmd"?

> Fehler in Microsoft VB-Script. Objekt erforderlich in App.namespace(...)
Auf jeden Fall nur den Pfad zum Zielordner - also "D:\Acc_anw\SONSTIGE\" - angeben ...

Habe den Fehler schon bemerkt und "umsatz.txt" gelöscht, Fehlermeldung bleibt. ?Was tun????

Tschuldige, dass ich so lästig bin!

Lg Wolfgang
Bitte warten ..
Mitglied: bastla
10.02.2011 um 20:05 Uhr
Hallo woho2010!
Das verstehe ich nicht, wie bzw. wo soll ich diese Parameterdefinition einbauen?

Habe die Batch-Datei über Windows "Öffnen mit" verknüpft
Wo hast Du denn da die Batchdatei "eingebaut"?

Um das etwas abzukürzen: Der Verweis auf die Batchdatei ist für den Dateityp "hbm" unter "open" eingetragen (zB in XP unter "Extras / Ordneroptionen... / Dateitypen / hbm / Erweitert / open / Bearbeiten... / Anwendung für diesen Vorgang") - dort kannst Du auch am Ende noch (nach einem Leerzeichen) %1 hinzufügen ...

Grüße
bastla
Bitte warten ..
Mitglied: woho2010
11.02.2011 um 08:47 Uhr
Hi Bastla

habe endlich meinen Fehler gefunden, der Code hat funktioniert: Ich hatte aus welchem Grund auch immer die zu entpackende Textdatei nicht gezippt, nur mit neuem Suffix "hbm" versehen, deswegen gab es den Fehler in der Zip-Datei beim Entpacken. Alles wunderbar, ihr seid Spitze!

Gottes Segen für euch und eure Familie

Wolfgang
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Entwicklung
Email per Batch Datei verschicken (4)

Frage von UltraZz zum Thema Entwicklung ...

Outlook & Mail
gelöst Outlook vba Email Anhang in Ordner speichern (3)

Frage von Daywalkercxp zum Thema Outlook & Mail ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (25)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

Windows 10
Welches OS für Firmengeräte? (17)

Frage von MarkusVH zum Thema Windows 10 ...

Server-Hardware
gelöst Erfahrungswerte Hardwaresupport physikalische Server (16)

Frage von Devilx zum Thema Server-Hardware ...

Exchange Server
SBS2011: POP3-Connector 10 MB Grenze Email Benachrichtigung (15)

Frage von bogi1102 zum Thema Exchange Server ...