spyeer
Goto Top

ODER Verknüpfung für batch file

Hallo zusammen,

ich bin neu in meinem Unternehmen und muss ein Problem lösen. Ich habe bereits im Forum gesucht, aber leider nichts passendes gefunden.

Das Programm soll:
- manuelles (durch User Eingabe) Starten eines Dienstes
- manuelles (durch User Eingabe) Stoppen eines Dienstes
- wird KEIN Manuelles Stoppen bestätigt, soll das Programm innerhalb einer bestimmten Zeit den Dienst automatisch stoppen


hier nun mein Anfang:

@echo off
:logon

echo Aktion start/stop:

echo manuelles Starten:
set /p Aktion=start:
IF %Aktion% == start net start Messenger
echo.
echo.
echo Dienst gestartet
echo.

echo manuelles Stoppen:
set /p Aktion=stop:
IF %Aktion% == stop net stop Messenger

echo auto Stoppen:
sleep 5
net stop Messenger
echo.
echo.
echo Dienst gestoppt
echo.

pause


Meine Überlegung ist eine ODER Verknüpfung für stoppen und autom. stoppen hinzuzufügen. Vielleicht hat jemand von euch eine bessere Idee.

Danke im Voraus

Siegmar

Content-Key: 117438

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

Printed on: April 19, 2024 at 14:04 o'clock

Mitglied: 77559
77559 Jun 04, 2009 at 08:42:36 (UTC)
Goto Top
Hallo Siegmar,

willkommen im Forum.

Ich nehme mal an, das dies eine Übungsaufgabe für dich ist.
Dein Code ist besser lesbar wenn du die Formatierungshilfe beachtest und Code Tags benutzt.

Wenn die erste Eingabe nicht start war, kannst du eigentlich abbrechen.
Die Abfrage ist Case sensitiv füge dem IF besser ein /i zu.
Wenn die Batchdatei in der zweiten Abfrage wartet, hast du keine Möglichkeit mehr etwas Zeitgesteuertes zu tun, das muss vorher passieren.
Du kannst mit
start "" %comspec% /C (Sleep 5 & net stop messenger)
den Stop Befehl vorher absetzen.

Gruß
LotPings
Member: Spyeer
Spyeer Jun 04, 2009 at 10:09:14 (UTC)
Goto Top
Hi LotPings,

ist nicht ganz eine Ü-aufgabe.
Kurze history zum Programm:
In meiner Firma ist ein VNC Server auf einem Client installiert, der soll/darf nur wenn ein Mitarbeiter eine Eingabe macht den VNC starten/stoppen. Falls der Mitarbeiter vergißt ein stop zu setzen muß das Programm automatisch den VNC anhalten (nur Dienst anhalten nicht das Programm beenden).

Bin ein bißchen durcheinander wegen dieser Zeile:
##start "" %comspec% /C (Sleep 5 & net stop messenger)##
wo sollte diese Zeile stehen. Ich habe verstanden dass dieser Befehl zuerst ausgeführt werden soll, aber bei mir fürht er zu einem:
## System error 1060 has occured ##
Wie müßte also das Programm deiner Meinung aussehen?

Gruß Siegmar
Mitglied: 77559
77559 Jun 04, 2009 at 10:58:42 (UTC)
Goto Top
Zitat von @Spyeer:
Wie müßte also das Programm deiner Meinung aussehen?

Habe hier kein sleep, versuch mal
start /min "" %comspec% /C "ping -n 5 localhost & net stop messenger&pause"
Die Pause ist nur zur Demo.

Gruß
LotPings
Member: Spyeer
Spyeer Jun 04, 2009 at 11:35:23 (UTC)
Goto Top
Super hat geklappt, habe deine Zeile etwas abgeändert funtz genial.

nur verstehe ich dies

##start /min "" %comspec%##

nicht.

was macht min?? und comspec??

Danke LotPings
Mitglied: 78632
78632 Jun 04, 2009 at 11:46:40 (UTC)
Goto Top
Was start macht, bekommst du mit help start oder start /? in der Konsole raus. Comspec ist eine Umgebungsvariable und gibt den Pfad zum Kommandointerpreter an.
Wenn du SET eingibst, wird dir der Inhalt aller Umgebungsvariablen angezeigt, mit SET C bekommst du nur die angezeigt, die mit "C" beginnen.

Und zukünftig packe bitte deine Code-Schnipsel in entsprechende Tags, damit sie übersichtlicher werden, siehe > Formatierungshilfe.
Das kannst du übrigens mit "bearbeiten" in deinem Beitrag auch jetzt noch. face-wink
Member: Spyeer
Spyeer Jun 04, 2009 at 12:13:47 (UTC)
Goto Top
hoffe es sieht jetzt besser aus. face-wink
Mitglied: 78632
78632 Jun 04, 2009 at 12:17:13 (UTC)
Goto Top
Jein. Es fällt zwar eher auf, aber du solltest die Zeilen in Code-Tags packen, wie es
wird.