spyeer
Goto Top

Abfrage auf comspec

Vieleicht wißt Ihr ja weiter!

Hallo,

habe eine Batchfile geschrieben die einen bestimmten Dienst automatisch/manuell aktivieret bzw. deaktiviert.

Mein File:

@echo off

:logon
echo.
echo LOGON
echo.
echo.
echo.
echo Dieses File wurde geschrieben um den VNC-Server zu starten und
echo um dessen Dienst zu AKTIVIEREN. Nur der berechtigte User kann und
echo darf diese Datei oeffnen !!!!
echo.
echo Start/Stop VNC Server
echo.
echo.

echo Aktion start/stop:

set /p Aktion=start:
IF /i %Aktion% == start net start vnc
echo.
echo.
echo Dienst gestartet
echo.

start /min "" %comspec% /C "ping -n 7 localhost & net stop vnc & exit"

set /p Aktion=stop:
IF /i %Aktion% == stop net stop vnc

cls

echo.
echo !!! Zeitueberschreitung - Dienst wurde automatisch beendet !!!
echo.
echo.

echo !!!!!!!!!!!!!!!!!!!!!! Dienst gestoppt !!!!!!!!!!!!!!!!!!!!!!!
echo.
echo.
sleep 5

exit


Mein Problem:

start /min "" %comspec% /C "ping -n 7 localhost & net stop vnc & exit"

möchte dass sobald der Ping abgelaufen ist (Fenster geschlossen) wieder in das Hauptfenster springen soll also von comspec in die eigentliche Routine. D.h.
wenn der Ping abgelaufen ist soll er im Hauptfenster:
echo.
echo !!! Zeitueberschreitung - Dienst wurde automatisch beendet !!!
echo.
echo.

echo !!!!!!!!!!!!!!!!!!!!!! Dienst gestoppt !!!!!!!!!!!!!!!!!!!!!!!
echo.
echo.
wiedergeben


Habe bisher einges bsp. goto sprung, schleife aussprobiert nichts funzte richtig.

Danke schon mal im voraus

Siegmar

Content-Key: 119837

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

Printed on: April 20, 2024 at 06:04 o'clock

Mitglied: 60730
60730 Jul 06, 2009 at 15:24:39 (UTC)
Goto Top
Servus,

vorab - schau dir mal die an - genauer Code.

An deiner Stelle würde ich das etwas anders schreiben.
Wobei mir nicht ganz klar ist, für was du das Ping haben willst * und das mit Net Start "nur" der Dienst gestartet wird und nicht die Startart auf aktiviert/deaktiviert gestellt wird.

Mit diesem zweizeiler startet / stoppt der VNC Dienst - je nachdem, ob er vorher gestartet / oder gestoppt war. (ohne Benutzer Interaktion)

net start |find "vnc" && Net stop vnc || net start vnc  
ping -n 7 localhost >nul

Gruß

  • in meinem Beispiel dient es dazu, die Ausgabe noch sehen zu können.
Mitglied: 80220
80220 Jul 06, 2009 at 15:45:17 (UTC)
Goto Top
Du könntest die Zeilen von TimoBeil etwas abgewandelt verwenden (ungetestet) und den Dreizeiler-Batch per call aufrufen:

net start |find "vnc" && Net stop vnc & set /a E=2 || net start vnc & set /a E=3  
ping -n 7 localhost >nul
exit /b %E%

Damit wird als Exitcode entweder 1 oder 2 übergeben, was über %errorlevel% vom aufrufenden Batch verarbeitet werden kann.
Davon abhängig kannst du dann den Bildschirm mit entsprechende Meldungen füllen, bis er vollgeschrieben ist. face-smile
Member: Spyeer
Spyeer Jul 07, 2009 at 07:14:05 (UTC)
Goto Top
Das Programm an sich läuft einwandfrei. Nur möchte ich dass NACH dem Ping (2.Fenster) also nach

start /min "" %comspec% /C "ping -n 7 localhost & net stop vnc & exit"

ins 1.Fenster zurückspringt und das hier anzeigen soll

echo.
echo !!! Zeitueberschreitung - Dienst wurde automatisch beendet !!!
echo.
echo.

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


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).
Der Ping dient bei mir als Zähler der den Dienst nach einer Zeit automatisch beendet.

P.S. sorry für meine Formatierung ich versuche es in Zukunft etwas anders zu gestalten ;-}
Mitglied: 60730
60730 Jul 07, 2009 at 07:52:34 (UTC)
Goto Top
Servus,

du ganz im Ernst - das ist Augenwischerei.

Mit Boardmitteln und damit meine ich wirklich Werkzeuge die bei Winblows dabei sind....

Ist es vollkommen einfach von einem Rechner aus, die Dienste eines anderen zu steuern.

Also auch VNC an oder auszuknipsen - ohne dass das jemand "merkt" - (und wie das geht verrate ich nur per PN)

Von daher solltet Ihr euch ein Tool besorgen, das nur dann eine Steuerung zuläßt, wenn der User zustimmt.
Nur hab ich da keine Ahnung von - da ich einen kostenpflichtigen Viewer benutze

Gruß
Member: Spyeer
Spyeer Jul 07, 2009 at 09:11:27 (UTC)
Goto Top
ich weis dass es einfacher geht. Ich habe es vorgeschrieben bekommen dass es so wie ich es beschrieben habe sein soll.
Vielleicht hast du mich nicht ganz verstanden, das Prog soll auf einer Anlage laufen die nur wenn ein Mitarbeiter VOR Ort ist connecten soll. Der Client ist am A*** der Welt.
Hast du keine Idee ?? Ich benötige keine andere Software dazu.
Brauche nur den "Sprung" von einem Fenster ins andere.
Mitglied: 60730
60730 Jul 07, 2009 at 09:49:05 (UTC)
Goto Top
Zitat von @Spyeer:
ich weis dass es einfacher geht. Ich habe es vorgeschrieben bekommen
dass es so wie ich es beschrieben habe sein soll.

face-wink Und ich mache nie das, was man mir vorschreibt, sondern hab (meistens) eigene Ideen und das ich die habe, dafür werde ich bezahlt face-wink

Vielleicht hast du mich nicht ganz verstanden,
face-wink *lol* ich glaub das können wir beide über den anderen schreiben face-wink
echo !!! Zeitueberschreitung - Dienst wurde automatisch beendet !!!

So ganz klar, was du mit dieser "Vorgekaukelten Meldung erreichen willst - wird mir das immer noch nicht..

das Prog soll auf einer Anlage laufen die nur wenn ein Mitarbeiter VOR Ort ist > connecten soll. Der Client ist am A* der Welt.

Dafür kann doch der A
* nichts face-wink

Hast du keine Idee ??
Der Tag, an dem mir die Ideen ausgehen, ist der Tag, wo ich mein Eigenheim 2 Meter unterirdisch beziehe face-wink

Also wenn einer Vor Ort ist - ins Loginscript schreiben, und das stoppen per At um 2.00 nachts?

Ich benötige keine andere Software dazu.
? ja "brauchen" nicht, aber "sinnvoller" - obwohl wie gesagt - ich geb mir Mühe den Sinn zu verstehen, aber offensichtlich ist meine innere Uhr noch auf Montag gestellt...

Brauche nur den "Sprung" von einem Fenster ins andere.

  • Dann mach zur Not zwei Bätche, oder starte nicht comspec, sondern ping, nicht per start, sondern per call.

  • call ping.exe -n 7 localhost
  • net stop vnc

Btw: ich hab dein Script nicht ausprobiert - weil ich den Sinn immer noch nicht verstanden habe - und mir das "ausprobieren" - daher nix bringt.

Gruß
Mitglied: 80220
80220 Jul 07, 2009 at 09:56:20 (UTC)
Goto Top
@Spyeer

Sag mal, liest du eigentlich überhaupt, was man dir schreibt?
Member: Spyeer
Spyeer Jul 07, 2009 at 10:11:07 (UTC)
Goto Top
@80220

hab ich gelesen bin noch dabei deine Lösung umzusetzen

@timobeil

deine Idee hatte ich schon sieht aber schrecklich aus.;-}

es gibt 2 Möglichkeiten den Dienst anzuhalten:
1. der MA gibt manuell stop ein
oder parallel dazu
2. durch den ping (14400 entspricht 4 Std) soll das Prog automatisch den Dienst anhalten. Kann ja sein der MA "vergisst" einmal den Dienst manuell zu stoppen.
Member: Spyeer
Spyeer Jul 07, 2009 at 11:19:19 (UTC)
Goto Top
also geht nicht der Befehl:
ping -n 7 localhost >nul

E=2
und
E=3

habe ich über eine if schleife gesetzt. also

IF E=2 goto auto
IF E=3 goto manu

Ich glaube das der Befehl was bringt nur ich kann ihn nicht richtig umsetzen.
Mitglied: 80220
80220 Jul 07, 2009 at 11:27:33 (UTC)
Goto Top
Ich glaube, dass du nicht lesen kannst.

Und tschüss....