Email-Anhang per batch-Datei in bestimmten Ordner entzippen
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?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160473
Url: https://administrator.de/forum/email-anhang-per-batch-datei-in-bestimmten-ordner-entzippen-160473.html
Ausgedruckt am: 23.12.2024 um 09:12 Uhr
19 Kommentare
Neuester Kommentar
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
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
Hallo woho2010 und willkommen im Forum, hallo Skyemugen!
Nur per Drag & Drop getestet:
Grüße
bastla
Nur per Drag & Drop getestet:
@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("%~dp1").CopyHere App.Namespace("%ZIP%").Items
cscript //nologo %U%
del "%ZIP%"
bastla
Aloha,
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é
>%U% echo Set App=CreateObject("Shell.Application"):Set a=WScript.Arguments:App.Namespace("%~dp1").CopyHere App.Namespace("%ZIP%").Items
%~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é
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
zu ändern.
ergänzt.
Grüße
bastla
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
Habe nun eine "Unzip.vbs" im Temp-Ordner.
Das lässt sich ändern, indem Du am Ende des Batches noch eindel %U%
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
Hallo woho!
startest, sollte das klappen ...
Grüße
bastla
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
Grüße
bastla
Hallo woho2010!
Grüße
bastla
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
Hallo woho2010!
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
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