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, 7570 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
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ä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 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...