masakari
Goto Top

Programmaufruf über bat - danach automatisches schliessen

Hallo,

ich bin derzeit mit der Betreuung eines Bürorechners betraut und habe folgendes Problem.
Dort soll zum Systemstart Outlook gestarted werden und wenn das gleich über den Autostartordner geht braucht das mit den andren Programmen ziemlich lange (u.a. ist das Gigaset und der Datenabgleich schuld, der bremst einfach alles). Meine Lösung ist eine bat-Datei, welche 60 sec wartet und dann Outlook aufruft.

Leider schliesst sich die Datei nicht nach dem Aufruf von Outlook.
Dies sollte aber geschehen. Nach tagelangem Recherchieren in dem ich cls, go to end, end, close, exit gefunden habe und ohne erfolg versucht habe schreibe ich jetzt hier in diesem spezialistenforum und erhoffe/bitte um Antwort.

bat-Datei:

@echo OFF
ECHO Bitte 1 Minute warten bis Outlook gestartet wird ... Das System ist sonst zu langsam
WAIT 60 KEY
"C:\Programme\Microsoft Office\OFFICE11\OUTLOOK.EXE" /recycle


versucht wurde:

CLS
EXIT
END
GO TO END
CLOSE
GOTO END
:ENDE

das fenster unsichtbar machen ginge mit:

cmdow @ /HID

aber ich wollte das nur als letzten ausweg nutzen.

Ich hoffe ihr könnt mir helfen und bedanke mich schon im vornherein

Gruß Masakari

Content-ID: 79143

Url: https://administrator.de/contentid/79143

Ausgedruckt am: 25.11.2024 um 21:11 Uhr

rubberduck
rubberduck 25.01.2008 um 13:55:02 Uhr
Goto Top
Ist zwar nicht elegant, aber es funktioniert...

IF EXIST "c:\outlook.vbs" DEL "c:\outlook.vbs"  
echo Set wshshell = CreateObject("Wscript.Shell") >> d:\outlook.vbs  
echo wshshell.Run """C:\Programme\Microsoft Office\OFFICE11\outlook.exe""" >> d:\outlook.vbs  

TIMEOUT 60
WSCRIPT d:\outlook.vbs 'geht auch mit CSCRIPT  
IF EXIST "c:\outlook.vbs" DEL "c:\outlook.vbs"  
Logan000
Logan000 25.01.2008 um 14:11:53 Uhr
Goto Top
Oder So:
@ECHO OFF
ECHO Bitte 1 Minute warten bis Outlook gestartet wird ... Das System ist sonst zu langsam
WAIT 60 KEY
Start C:\Programme\"Microsoft Office"\OFFICE11\OUTLOOK.EXE /recycle  
EXIT
Biber
Biber 25.01.2008 um 14:12:28 Uhr
Goto Top
Moin Masakari,

wenn es nur darum geht, dass sich das CMD-Fenster nach dem Outlook-Starten wieder schließt, dann reicht es natürlich, wenn Du es mit "Start "" "c:\..outlook.exe /recycle" aufrufst. Siehe Hilfe zu START (Start /? am CMD-Prompt).

Wenn das CMD-Fenster gar nicht zu sehen sein soll - irgendwo hier im Forum ist auch ein "RunABatMinimed.vbs" zu finden - unter den Suchbegriffen "Batch minimiert ausführen" oder so.
Aber dann wäre es in der Tat Unsinn, nicht gleich den Rest auch via VBS zu erledigen. Siehe Rubberducks Skizze.

Grüße
Biber
Masakari
Masakari 25.01.2008 um 23:19:58 Uhr
Goto Top
Oder So:
> @ECHO OFF
> ECHO Bitte 1 Minute warten bis Outlook
> gestartet wird ... Das System ist sonst zu
> langsam
> WAIT 60 KEY
> Start C:\Programme\"Microsoft  
> Office"\OFFICE11\OUTLOOK.EXE /recycle  
> EXIT
> 

Vielen Dank für die Antworten. Was komisch ist, auf dem PC im Büro ist XP Home und dort gibt es die wait aber auf meinem zuhause nicht ... *grübel. Die Bat von Logan000 schließt sich am ende aber zeigt eben eine Fehlermeldung weil die Wait nicht gefunden wurde. Im Büro hatte ich die Version mit dem EXIT eigentlich schon probiert und hab in Erinnerung dass es nicht funktioniert hatte. Ich schau morgen bei mir nochmal bzw. in der kommenden Woche auf dem PC im Büro.
Masakari
Masakari 26.01.2008 um 15:33:20 Uhr
Goto Top
Hallo und vielen dank für die zahlreichen antworten.

ich habe jetzt endlich die wait integriert und zumindest diese läuft.

[code] @echo OFF
ECHO Bitte 1 Minute warten bis Outlook gestartet wird ... Das System ist sonst zu langsam
WAIT 20 KEY
START "C:\Programme\PowerToy\Clock.exe"
EXIT[code]

nun habe ich das problem, dass wenn ich "START" nutze versucht wird die anwendung in der konsole zu öffnen. nehme ich START weg funktioniert der aufruf korrekt.
Dann wiederum schliesst sich aber nicht das bat-fenster.

ich werde die vbs-version auch noch versuchen, nur kenne ich mit mit vbs garnicht aus.

ich meld mich dann nochmal face-smile

dank und gruß Masakari

edit: hab grad WSH aktiviert und gefunden dass es auf den w2k Maschienen auch dabei sein soll. Problem ist die Fehlermeldung die ich nicht korrigieren kann.

Script: <Pfad/Dateiname>.vbs
Zeile: 1
Zeichen: 10
Fehler: 'Then' erwartet
Code: 800A03F9
Quelle: Kompilierungsfehler in Microsoft VBScript

ich habe folgendes geändert:

If EXIST "c:\outlook.vbs" Then DEL "c:\outlook.vbs"

und das funktioniert leider auch nicht, gleiche Fehlermeldung, auch bei Großschreibung von IF und THEN. Würde mich freuen wenn mir rubberduck (oder jemand andres) hier nochmal helfen würde.

Danke face-smile

|EDIT 2|

ich hab jetzt meinen fehler gefunden: START "..." muss durch START ... ersetzt werden. Ich vermutete dass dort auch mit " gearbeitet werden muss wegen den Freizeichen aber nix da. Dann klappt auch das schliessen face-smile *freu* dank euch face-smile

Nun habe ich grad gemerkt dass meine WAIT eine andre ist von 1996 bei der es keinen Schalter: KEY gibt, dafür aber eine farbige ausgabe bspw. des runterzählenden countdowns. Ich schau mich nochmal wegen einer normalen wait um.
rubberduck
rubberduck 27.01.2008 um 09:29:47 Uhr
Goto Top
Versuchs doch mit TIMEOUT, wie ich es in meinem Beispiel bereits verwendet habe.

Der Fehler aus Deinem ersten Edit ist interessant...

Da Du schreibst, dass Du Dich mit Scripts nicht so auskennst, versuche ich es ein wenig zu Erklären:

Zeile 1: Per Batch wird geprüft, ob das angegebene .VBS (c:\outlook.vbs) existiert. Wenn ja, wird es gelöscht. Braucht kein then.
Zeile 2,3: Hier werden zwei Codezeilen VBS via Batch in eine VBS-Datei geschrieben (Der Aufruf von Outlook)
Zeile 5: Per Batch 60 Sekunden warten
Zeile 6: Per Batch wird das vorhin erstellte .VBS gestartet
Zeile 7: Per Batch wird geprüft, ob das angegebene .VBS (c:\outlook.vbs) existiert. Wenn ja, wird es gelöscht. Braucht kein then.
Masakari
Masakari 27.01.2008 um 12:15:03 Uhr
Goto Top
Versuchs doch mit TIMEOUT, wie ich es
in meinem Beispiel bereits verwendet habe.

Der Fehler aus Deinem ersten Edit ist
interessant...

Da Du schreibst, dass Du Dich mit Scripts
nicht so auskennst, versuche ich es ein wenig
zu Erklären:

Zeile 1: Per Batch wird geprüft, ob das
angegebene .VBS (c:\outlook.vbs) existiert.
Wenn ja, wird es gelöscht. Braucht
kein then.
Zeile 2,3: Hier werden zwei Codezeilen VBS
via Batch in eine VBS-Datei geschrieben (Der
Aufruf von Outlook)
Zeile 5: Per Batch 60 Sekunden warten
Zeile 6: Per Batch wird das vorhin erstellte
.VBS gestartet
Zeile 7: Per Batch wird geprüft, ob das
angegebene .VBS (c:\outlook.vbs) existiert.
Wenn ja, wird es gelöscht. Braucht
kein then.

Guten Morgen und danke für die Antwort. Muss gleich mal ein paar Dinge richtigstellen, damit kein falscher Eindruck entsteht.
a) ich habe dein Beispiel per copy&paste übernommen mit dem Timeout
b)ich wollte nicht ausdrücken dass ich garkein plan von scripten habe, meine erfahrung mit vbs ist aber nicht existent, aber durch grundkenntnisse in vb, tp, batch und java konnte ich dein script schon lesen face-smile bloß zum selber schreiben reicht's nicht

daher und aus der fehlermeldung heraus habe ich versucht das fehlende then einzufügen.

dein beispiel war doch vbs-code oder? weil die erweiterung der datei vbs ist.

zusammenfassend kann ich sagen:

vbs-script hilft leider nicht

WAIT Variante1

WAIT 5
START C:\Programme\PowerToy\Clock.exe
EXIT

funktioniert nur mit Pfaden die keine Freizeichen enthalten
ODER
Fehlermeldung wenn der pfad ein leerzeichen enthält "... konnte nicht gefunden werden"

bsp: Start C:\Programme\Movie Maker\moviemk.exe


WAIT Variante2

WAIT 5
START "C:\Programme\PowerToy\Clock.exe"
EXIT

die exe wird als commandozeile geöffnet


WAIT Variante 3

WAIT 5
"C:\Programme\PowerToy\Clock.exe"
EXIT

funktioniert aber commando-fenster bleibt offen
bei leerzeichen wird die exe als commandozeilenfenster ausgeführt

bsp: "C:\Programme\Movie Maker\moviemk.exe"


WAIT Variante 4

WAIT 5
C:\Programme\PowerToy\Clock.exe
EXIT

funktioniert aber commando-fenster bleibt offen
bei leerzeichen passiert nix

bsp: C:\Programme\Movie Maker\moviemk.exe
rubberduck
rubberduck 28.01.2008 um 05:50:25 Uhr
Goto Top
dein beispiel war doch vbs-code oder? weil die erweiterung der datei vbs ist.

Nein... Jedenfalls nicht alles.
Du musst mein Beispiel Kopieren und als .BAT/.CMD abspeichern.
Wenn Du dann den Batch startest, wird Temporär ein .VBS erstellt, ausgeführt und am Schluss wieder gelöscht.

Darum hab ich nie richtig kapiert, was Du mit WAIT im Sinn hattest...
WAIT ist kein DOS-Befehl, der mir geläufig wäre... DOS hat TIMEOUT und VBS hat SLEEP, also woher hast Du WAIT?
Masakari
Masakari 31.01.2008 um 12:54:53 Uhr
Goto Top
vielen dank für deine antwort und entschuldige die lange antwortzeit.

wenn man nach verzögerten starts googled findet man an jeder ecke den verweis auf wait.exe. ursprünglich dachte ich dass es teil von DOS bzw. cmd wäre, später wurde ich eines besseren belehrt.

sleep hatte ich auch schon gelesen aber leider kein zusammenhang mit der gültigen umgebung angegebeen.

Edit:
ich habe grade dein script kopiert und als bat gespeichert. beim ausführen gabs fehlermeldungen (System ist WXP Home SP2)

Cmd.exe - Fensterausgabe:
C:\Dokumente und Einstellungen\Test\Desktop>IF EXIST "c:\outlook.vbs" DEL "c:\outlook.vbs"

C:\Dokumente und Einstellungen\Test\Desktop>echo Set wshshell = CreateObject("Wscript.Shell") 1>>d:\outlook.vbs
Das Gerät ist nicht bereit.

C:\Dokumente und Einstellungen\Test\Desktop>echo wshshell.Run """C:\Programme\Microsoft Office\OFFICE11\outlook.exe""" 1>>d:\outlook.vbs
Das Gerät ist nicht bereit.

C:\Dokumente und Einstellungen\Test\Desktop>TIMEOUT 60
Der Befehl "TIMEOUT" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

C:\Dokumente und Einstellungen\Test\Desktop>WSCRIPT d:\outlook.vbs 'geht auch mit CSCRIPT

Pop-up Fehlermeldung vom Windows Script Host:
Das Laden des Scripts "d:\outlook.vbs" ist fehlgeschlagen (Das Gerät ist nicht bereit. ).
Masakari
Masakari 01.02.2008 um 13:21:22 Uhr
Goto Top
Hallo,

letztendlich habe ich mich für folgende nicht grad elegante aber funktionierende Lösung entschieden:

ausführen.bat
CODE-------------------------------------------------
@echo OFF
cmdow @ /hid
ECHO Bitte 1 Minute warten bis .... gestartet wird ... Das System ist sonst zu langsam
WAIT 40
START %SystemRoot%\kill.bat
"<<Anwendung.xxx>>"
EXIT
ENDE------------------------------------------------

kill.bat
CODE-------------------------------------------------
cmdow @ /hid
WAIT 3
taskkill /f /IM CMD.exe
ENDE------------------------------------------------

cmdow und WAIT sind seperate Programme, welche am besten nach %systemroot%\system32 kopiert werden. Von WAIT gibt es mehrere Versionen, ich empfehle der einfachheithalber die bei mir am besten funktioniert hatte. Das ist die Version welche Countdown-Anzeige, Farb-Ausgabe und anderes ermöglicht (14,8KB groß). Bei andren Versionen gabs Probleme mit den Sekunden et c.

Mit CLS, EXIT o.ä. wäre es noch besser aber es wollte bei mir nicht funktionieren.

Vielen Dank für die schnelle Hilfe hier face-smile

Gruß Masakari
rubberduck
rubberduck 01.02.2008 um 13:39:26 Uhr
Goto Top
Kleine Frage:
Hast Du mein Script überhaupt angeschaut, oder einfach angenommen, dass es funktioniert?

Fällt Dir hier gar nichts auf?
echo Set wshshell = CreateObject("Wscript.Shell") 1>>d:\outlook.vbs

Hast Du ein d:\? Ich schon...
Es würde sicher nicht Schaden, die Ausgabe auf einen Pfad zu legen, der Existiert und wo Du auch Berechtigt bist...

Wie Du Dein Problem löst, ist im Endeffekt eigentlich Wurscht. Aber ein wenig mitdenken ist doch nicht zuviel verlangt. Oder doch?
miniversum
miniversum 01.02.2008 um 14:42:52 Uhr
Goto Top
>WAIT 5
>START C:\Programme\PowerToy\Clock.exe
>EXIT

funktioniert nur mit Pfaden die keine
Freizeichen enthalten
ODER
Fehlermeldung wenn der pfad ein leerzeichen
enthält "... konnte nicht gefunden
werden"

bsp: Start C:\Programme\Movie
Maker\moviemk.exe


WAIT Variante2

>WAIT 5
>START
"C:\Programme\PowerToy\Clock.exe"
>EXIT

die exe wird als commandozeile
geöffnet


WAIT Variante 3

>WAIT 5
>"C:\Programme\PowerToy\Clock.exe"
>EXIT

funktioniert aber commando-fenster bleibt
offen
bei leerzeichen wird die exe als
commandozeilenfenster ausgeführt

bsp: "C:\Programme\Movie
Maker\moviemk.exe"


WAIT Variante 4

>WAIT 5
>C:\Programme\PowerToy\Clock.exe
>EXIT

funktioniert aber commando-fenster bleibt
offen
bei leerzeichen passiert nix

bsp: C:\Programme\Movie Maker\moviemk.exe

Nur so als Ergänzung:
Wenn du die Hilfe vom Start befehl liest (start /?) wirst du merken, dass der Befehl
Start "C:\Programme\Movie Maker\moviemk.exe"
nicht geht weil nach dem Start das erste in " ein Name ist der nur angezeigt wird. Daher wird das "C:\Programme\Movie Maker\moviemk.exe" als Name erkannt und nicht als Programm. Un das zu umgehen gibt es zwei Möglichkeiten:
1. Etwas unschön aber funktioniert indem Du nur einen Teil des Prades in " setzt.
Start C:\Programme\"Movie Maker"\moviemk.exe
2. Etwas als Name angeben, das funktioniert immer:
Start "Movie Maker wird gestartet..." "C:\Programme\Movie Maker\moviemk.exe"
oder alternativ eben nichts angeben:
Start "" "C:\Programme\Movie Maker\moviemk.exe"
miniversum
gypakk
gypakk 04.02.2008 um 14:34:41 Uhr
Goto Top
cmdow und WAIT sind seperate Programme,
welche am besten nach %systemroot%\system32
kopiert werden. Von WAIT gibt es mehrere
Versionen, (...)

Zur weiteren Verwirrung noch ein Tipp von mir. face-smile

Da WAIT kein Standardkommando zu sein scheint, gibt's noch ein zweckentfremdetes PING-Kommando, das immer funktionieren sollte:

ping 127.0.0.1 -n 42
(42 ist hier die ungefähre Wartezeit in Sekunden)

Grüße gypakk
Masakari
Masakari 05.02.2008 um 09:34:16 Uhr
Goto Top
ok, danke, ja dass ich start /? eingeben kann ist mir neu, hab zuvor auch nicht so intensiv mit der cmd gearbeitet

ich schaus mir mal an face-smile