37414
30.10.2006, aktualisiert am 18.10.2012
57827
25
0
Programm auf anderem PC starten
Eine Batchdatei soll von einem anderen PC aus per Batchdatei ausgeführt werden
Hallo,
nachdem ich schon mehrere erfolglose Versuche mit der netten Hilfe einiger von Euch gestartet habe, habe ich nun zunächst mal eine ganz einfache Variante versucht... aber selbst die funktioniert nicht.
Problem:
Ein Programm (EXE-Datei) soll von einem anderen PC aus gestartet werden.
Hierzu habe ich, da alles andere bisher nicht funktionierte, auf dem entfernten PC (PC08) eine kleine Batchdatei mit dem Namen "start_antrag.bat" hinterlegt, die die entsprechende Verknüpfung (antrag.lnk) direkt auf dem Desktop startet.
Die "start_antrag.bat" befindet sich in einem freigegebenen Verzeichnis "das".
Dies funktioniert einwandfrei, wenn ich die Batchdatei direkt an dem PC starte.
Der Inhalt dieser Batchdatei (start_antrag.bat) ist:
@echo off
c:\"dokumente und einstellungen"\user\desktop\antrag.lnk
Die Verknüpfung "antrag.lnk" startet das Programm "Antrag" - also die Datei "antrag.exe"
Wie gesagt - das funktioniert am PC selbst einwandfrei.
Nun habe ich auf meinem PC eine kleine Batchdatei hinterlegt mit dem Namen "antrag.bat", die die Batchdatei auf dem anderen PC nun starten soll, damit diese wiederum das Programm ausführt.
Der Inhalt dieser Batchdatei (antrag.bat) ist:
@echo off
start \\pc08\das\start_antrag.bat
Wenn ich jedoch von meinem PC aus diese Batchdatei (antrag.bat) ausführe, erhalte ich folgende Fehlermeldung:
c:\"dokumente und einstellungen"\user\desktop\antrag.lnk ist entweder falsch geschrieben oder konnte nicht gefunden werden
Die Fehlermeldung bezieht sich also auf den entfernten PC, wo sich ja die Verknüpfung (antrag.lnk) auf dem Desktop befindet.
Was muss ich tun, damit ich die Batchdatei (start_antrag.bat) von meinem PC aus starten kann, um das Programm (antrag.exe) auszuführen?
Hoffentlich kann mir jemand helfen... versuche es schon seit ein paar Tagen erfolglos
Viele Grüsse
Ingo
Hallo,
nachdem ich schon mehrere erfolglose Versuche mit der netten Hilfe einiger von Euch gestartet habe, habe ich nun zunächst mal eine ganz einfache Variante versucht... aber selbst die funktioniert nicht.
Problem:
Ein Programm (EXE-Datei) soll von einem anderen PC aus gestartet werden.
Hierzu habe ich, da alles andere bisher nicht funktionierte, auf dem entfernten PC (PC08) eine kleine Batchdatei mit dem Namen "start_antrag.bat" hinterlegt, die die entsprechende Verknüpfung (antrag.lnk) direkt auf dem Desktop startet.
Die "start_antrag.bat" befindet sich in einem freigegebenen Verzeichnis "das".
Dies funktioniert einwandfrei, wenn ich die Batchdatei direkt an dem PC starte.
Der Inhalt dieser Batchdatei (start_antrag.bat) ist:
@echo off
c:\"dokumente und einstellungen"\user\desktop\antrag.lnk
Die Verknüpfung "antrag.lnk" startet das Programm "Antrag" - also die Datei "antrag.exe"
Wie gesagt - das funktioniert am PC selbst einwandfrei.
Nun habe ich auf meinem PC eine kleine Batchdatei hinterlegt mit dem Namen "antrag.bat", die die Batchdatei auf dem anderen PC nun starten soll, damit diese wiederum das Programm ausführt.
Der Inhalt dieser Batchdatei (antrag.bat) ist:
@echo off
start \\pc08\das\start_antrag.bat
Wenn ich jedoch von meinem PC aus diese Batchdatei (antrag.bat) ausführe, erhalte ich folgende Fehlermeldung:
c:\"dokumente und einstellungen"\user\desktop\antrag.lnk ist entweder falsch geschrieben oder konnte nicht gefunden werden
Die Fehlermeldung bezieht sich also auf den entfernten PC, wo sich ja die Verknüpfung (antrag.lnk) auf dem Desktop befindet.
Was muss ich tun, damit ich die Batchdatei (start_antrag.bat) von meinem PC aus starten kann, um das Programm (antrag.exe) auszuführen?
Hoffentlich kann mir jemand helfen... versuche es schon seit ein paar Tagen erfolglos
Viele Grüsse
Ingo
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 43329
Url: https://administrator.de/contentid/43329
Ausgedruckt am: 22.11.2024 um 05:11 Uhr
25 Kommentare
Neuester Kommentar
Hallo,
nachdem ich schon mehrere erfolglose
Versuche mit der netten Hilfe einiger von
Euch gestartet habe, habe ich nun
zunächst mal eine ganz einfache Variante
versucht... aber selbst die funktioniert
nicht.
Problem:
Ein Programm (EXE-Datei) soll von einem
anderen PC aus gestartet werden.
Hierzu habe ich, da alles andere bisher
nicht funktionierte, auf dem entfernten PC
(PC08) eine kleine Batchdatei mit dem Namen
"start_antrag.bat" hinterlegt, die
die entsprechende Verknüpfung
(antrag.lnk) direkt auf dem Desktop startet.
Die "start_antrag.bat" befindet
sich in einem freigegebenen Verzeichnis
"das".
Dies funktioniert einwandfrei, wenn ich die
Batchdatei direkt an dem PC starte.
Der Inhalt dieser Batchdatei
(start_antrag.bat) ist:
@echo off
c:\"dokumente und
einstellungen"\user\desktop\antrag.lnk
Die Verknüpfung "antrag.lnk"
startet das Programm "Antrag" -
also die Datei "antrag.exe"
Wie gesagt - das funktioniert am PC selbst
einwandfrei.
Nun habe ich auf meinem PC eine kleine
Batchdatei hinterlegt mit dem Namen
"antrag.bat", die die Batchdatei
auf dem anderen PC nun starten soll, damit
diese wiederum das Programm ausführt.
Der Inhalt dieser Batchdatei (antrag.bat)
ist:
@echo off
start \\pc08\das\start_antrag.bat
Wenn ich jedoch von meinem PC aus diese
Batchdatei (antrag.bat) ausführe,
erhalte ich folgende Fehlermeldung:
c:\"dokumente und
einstellungen"\user\desktop\antrag.lnk
ist entweder falsch geschrieben oder konnte
nicht gefunden werden
Die Fehlermeldung bezieht sich also auf den
entfernten PC, wo sich ja die
Verknüpfung (antrag.lnk) auf dem Desktop
befindet.
Was muss ich tun, damit ich die Batchdatei
(start_antrag.bat) von meinem PC aus starten
kann, um das Programm (antrag.exe)
auszuführen?
Hoffentlich kann mir jemand helfen...
versuche es schon seit ein paar Tagen
erfolglos
Viele Grüsse
Ingo
nachdem ich schon mehrere erfolglose
Versuche mit der netten Hilfe einiger von
Euch gestartet habe, habe ich nun
zunächst mal eine ganz einfache Variante
versucht... aber selbst die funktioniert
nicht.
Problem:
Ein Programm (EXE-Datei) soll von einem
anderen PC aus gestartet werden.
Hierzu habe ich, da alles andere bisher
nicht funktionierte, auf dem entfernten PC
(PC08) eine kleine Batchdatei mit dem Namen
"start_antrag.bat" hinterlegt, die
die entsprechende Verknüpfung
(antrag.lnk) direkt auf dem Desktop startet.
Die "start_antrag.bat" befindet
sich in einem freigegebenen Verzeichnis
"das".
Dies funktioniert einwandfrei, wenn ich die
Batchdatei direkt an dem PC starte.
Der Inhalt dieser Batchdatei
(start_antrag.bat) ist:
@echo off
c:\"dokumente und
einstellungen"\user\desktop\antrag.lnk
Die Verknüpfung "antrag.lnk"
startet das Programm "Antrag" -
also die Datei "antrag.exe"
Wie gesagt - das funktioniert am PC selbst
einwandfrei.
Nun habe ich auf meinem PC eine kleine
Batchdatei hinterlegt mit dem Namen
"antrag.bat", die die Batchdatei
auf dem anderen PC nun starten soll, damit
diese wiederum das Programm ausführt.
Der Inhalt dieser Batchdatei (antrag.bat)
ist:
@echo off
start \\pc08\das\start_antrag.bat
Wenn ich jedoch von meinem PC aus diese
Batchdatei (antrag.bat) ausführe,
erhalte ich folgende Fehlermeldung:
c:\"dokumente und
einstellungen"\user\desktop\antrag.lnk
ist entweder falsch geschrieben oder konnte
nicht gefunden werden
Die Fehlermeldung bezieht sich also auf den
entfernten PC, wo sich ja die
Verknüpfung (antrag.lnk) auf dem Desktop
befindet.
Was muss ich tun, damit ich die Batchdatei
(start_antrag.bat) von meinem PC aus starten
kann, um das Programm (antrag.exe)
auszuführen?
Hoffentlich kann mir jemand helfen...
versuche es schon seit ein paar Tagen
erfolglos
Viele Grüsse
Ingo
Ich verstehe nicht, was die Verknüpfung soll. Wenn du das Verzeichnis freigegeben hast und die Rechtevergabe auch korrekt ist, musst du die EXE auch ausführen können.
Siehst du von deinem Rechner aus den PC08 in der Netzwerkumgebung? Was macht denn die antrag.exe? Und wo befindet sich diese?
Und diese anderen Leute arbeiten von ihren PCs aus mit diesem Programm? Falls ja, wie? Über die Verknüpfung auf dem Desktop eines lokalen Benutzers? Das kann ich mir nur schwer vorstellen.
Ist das Verzeichnis "oh" auf dem PC08 auch freigegeben? Dann sollte doch auch der Aufruf "\\pc08\oh\antrag.exe" funktionieren.
Ist das Verzeichnis "oh" auf dem PC08 auch freigegeben? Dann sollte doch auch der Aufruf "\\pc08\oh\antrag.exe" funktionieren.
Hallo,
eine Batch-Datei wird immer auf dem Rechner ausgeführt, von dem aus sie aufgerufen wird, und nicht auf dem, auf dem sie gespeichert ist (oder auch: jede Datei wird auf dem Rechner ausgeführt, von dem aus sie aufgerufen wird, nicht auf dem, auf dem sie gespeichert ist, wenn du zum Aufruf einfach nur die Dateifreigabe verwendest). Daher erhälst du auch die entsprechende Fehlermeldung, wenn du die bat von deinem Rechner aus ausführst, auf deinem Rechner gibt es wohl die antrag.lnk nicht.
Je nach dem, was du nun genau willst heisst die Lösung Remotedesktop (und Verwandte wie UltraVNC...), Remote Login (oder auch RemoteShell, Telnet...) oder psexec. Siehe z.B. auch Remote Angelegenheit
Filipp
eine Batch-Datei wird immer auf dem Rechner ausgeführt, von dem aus sie aufgerufen wird, und nicht auf dem, auf dem sie gespeichert ist (oder auch: jede Datei wird auf dem Rechner ausgeführt, von dem aus sie aufgerufen wird, nicht auf dem, auf dem sie gespeichert ist, wenn du zum Aufruf einfach nur die Dateifreigabe verwendest). Daher erhälst du auch die entsprechende Fehlermeldung, wenn du die bat von deinem Rechner aus ausführst, auf deinem Rechner gibt es wohl die antrag.lnk nicht.
Je nach dem, was du nun genau willst heisst die Lösung Remotedesktop (und Verwandte wie UltraVNC...), Remote Login (oder auch RemoteShell, Telnet...) oder psexec. Siehe z.B. auch Remote Angelegenheit
Filipp
Hi,
schau dir mal den Befehl at an! Ist zwar von hinten durch die Brust in's Auge, aber naja...
Du kannst auf dem Fremdrechner einen Task planen aller %time% + x und den dann auch wieder abschießen. Ist zwar umständlich, aber mit ein bisschen Geschick und freundlicher Hilfe gewisser User (), bekommt man evtl. was hin.
Psycho
schau dir mal den Befehl at an! Ist zwar von hinten durch die Brust in's Auge, aber naja...
Du kannst auf dem Fremdrechner einen Task planen aller %time% + x und den dann auch wieder abschießen. Ist zwar umständlich, aber mit ein bisschen Geschick und freundlicher Hilfe gewisser User (), bekommt man evtl. was hin.
Psycho
Ich glaube, ich habe hier ein eklatantes Verständnis-Problem. Verbessere mich bitte: Auf jedem Client befindet sich eine Verknüpfung zu einer lokalen EXE in einem lokalen Verzeichnis. Die EXE als solches baut aber eine Verbindung zum Server auf.
Das heißt für mich doch, dass es sich bei der antrag.exe um ein auf jedem Client installiertes Programm handelt, mit Installationsroutine, etc.
Wenn dieses Programm auf deinem Rechner nicht installiert ist: wie willst du es dann ausführen? Woher soll dein Rechner die notwendigen Informationen (Server-Anbindung, Registry-Einträge usw.) herbekommen?
Das geht nur, wie hier bereits erwähnt, über eine Session auf einem PC, auf dem die Installation vorhanden ist. Und das Programm läuft dann auch nur auf diesem PC.
Das heißt für mich doch, dass es sich bei der antrag.exe um ein auf jedem Client installiertes Programm handelt, mit Installationsroutine, etc.
Wenn dieses Programm auf deinem Rechner nicht installiert ist: wie willst du es dann ausführen? Woher soll dein Rechner die notwendigen Informationen (Server-Anbindung, Registry-Einträge usw.) herbekommen?
Das geht nur, wie hier bereits erwähnt, über eine Session auf einem PC, auf dem die Installation vorhanden ist. Und das Programm läuft dann auch nur auf diesem PC.
Hi Ingo,
Verständnisfrage: Hast du etwas davon, wenn das Programm auf einem anderen Rechner läuft? Oder möchtest du die Mitarabeiter zwingen, mit diesem Programm zu arbeiten? Da gäbe es dann andere Wege. Ich habe übrigens mal mit dem unten genannten at-Befehl mal ein bisschen experimentiert und bin damit durchaus in der Lage Programme auf einem anderen Rechner zu starten.
Psycho
Verständnisfrage: Hast du etwas davon, wenn das Programm auf einem anderen Rechner läuft? Oder möchtest du die Mitarabeiter zwingen, mit diesem Programm zu arbeiten? Da gäbe es dann andere Wege. Ich habe übrigens mal mit dem unten genannten at-Befehl mal ein bisschen experimentiert und bin damit durchaus in der Lage Programme auf einem anderen Rechner zu starten.
Psycho
Dafür ist es doch
sicherlich egal, ob das Programm auch auf
meinem PC installiert ist...
sicherlich egal, ob das Programm auch auf
meinem PC installiert ist...
Genau das ist es nicht. Weil dem Programm die weiterführenden Informationen fehlen.
Nehmen wir mal folgendes Beispiel: Auf einem entfernten Rechner befindet sich ein Word-Dokument. Bei dir ist kein Word installiert. Du verbindest dich mit dem anderen Rechner über ein Netzlaufwerk. Doppelklick auf die Word-Datei. Wirst du das Dokument lesen können? Richtig: Nein! Weil dein Rechner mit den Informationen, die er vom anderen Rechner bekommt nichts anfangen kann.
Und dass mir jetzt keiner mit WordPad kommt
Mit anderen Worten: Nur weil du von deinem Nachbarn einen Dachziegel "klaust", hast du noch lang kein eigenes Haus.
halloechen,
wenn du schon ein netzwerk hast, solltest du die aufgerufenen .exe dateien alle auf dem file server parat haben. so kannst du ein update gewaehrleisten, auch wenn die clients nicht an sind.
nachteil ist, du musst allen bescheid sagen dass sie aus dem programm raus muessen, damit die dateien durch das update ueberschrieben werden koennen. dies trifft natuerlich nur zu, wenn die .exe datei beim aufruf nicht geschlossen wird.
du kannst dann mit einer einzigen batch datei alle .exe dateien auf deinem file server updaten.
im laufe der zeit wurde mi das aber auch zu kompliziert. ich suchte also nach einer moeglichkeit die .exe dateien in dem moment zu updaten, wo sie auch wirklich aufgerufen wird. denn wenn der eine oder andere clitn die .exe datei die fuer ihn bestimmt ist/war nicht mehr benoetigt, brauch sie auch nicht upgedatet zu werden.
also haben wir das so gemacht, dass das programm die aktuelle versionsnummer in einem bestimmten verzeichniss auf dem fileserver ablegt welche dann mit der versionsnummer des updates verglichen wird. ist die versionsnummer unterschiedlich, wird ueber shell das update prograemmchen aufgerufen, dann die eigentliche .exe datei geschlossen welches unser update prograemmchen sofort merkt, und kopiert dann das update in das richtige ziel. nach dem update vorgang, ruft das update prograemmchen die geupdatet .exe datei wieder auf und beendet sich selber.
und das ist unser vollautomatischer update service. diese massnahme war noetig, da diverse leute die lokal nicht anwesend sind, permament auf dem neusten stand gehalten werden muessen was die programmversion angeht und wird somit auch gewaehrleistet. das update steht also sofort nach ende der kompilierung allen sofort zur verfuegung.
dies hat allerdings auch den nachteil, mache einen fehler ins programm und du hast den zorn vieler ehemals netten user auf deiner seite....)
viele gruesse
falco
p.s. solltest du weitergehende fragen diesbezueglich haben, ruf (030-30307721) am besten an sonst tippel ich mir nen wolf. und solltest du nciht programmieren, mhhhh, dann weiss ich auch nicht.
wenn du schon ein netzwerk hast, solltest du die aufgerufenen .exe dateien alle auf dem file server parat haben. so kannst du ein update gewaehrleisten, auch wenn die clients nicht an sind.
nachteil ist, du musst allen bescheid sagen dass sie aus dem programm raus muessen, damit die dateien durch das update ueberschrieben werden koennen. dies trifft natuerlich nur zu, wenn die .exe datei beim aufruf nicht geschlossen wird.
du kannst dann mit einer einzigen batch datei alle .exe dateien auf deinem file server updaten.
im laufe der zeit wurde mi das aber auch zu kompliziert. ich suchte also nach einer moeglichkeit die .exe dateien in dem moment zu updaten, wo sie auch wirklich aufgerufen wird. denn wenn der eine oder andere clitn die .exe datei die fuer ihn bestimmt ist/war nicht mehr benoetigt, brauch sie auch nicht upgedatet zu werden.
also haben wir das so gemacht, dass das programm die aktuelle versionsnummer in einem bestimmten verzeichniss auf dem fileserver ablegt welche dann mit der versionsnummer des updates verglichen wird. ist die versionsnummer unterschiedlich, wird ueber shell das update prograemmchen aufgerufen, dann die eigentliche .exe datei geschlossen welches unser update prograemmchen sofort merkt, und kopiert dann das update in das richtige ziel. nach dem update vorgang, ruft das update prograemmchen die geupdatet .exe datei wieder auf und beendet sich selber.
und das ist unser vollautomatischer update service. diese massnahme war noetig, da diverse leute die lokal nicht anwesend sind, permament auf dem neusten stand gehalten werden muessen was die programmversion angeht und wird somit auch gewaehrleistet. das update steht also sofort nach ende der kompilierung allen sofort zur verfuegung.
dies hat allerdings auch den nachteil, mache einen fehler ins programm und du hast den zorn vieler ehemals netten user auf deiner seite....)
viele gruesse
falco
p.s. solltest du weitergehende fragen diesbezueglich haben, ruf (030-30307721) am besten an sonst tippel ich mir nen wolf. und solltest du nciht programmieren, mhhhh, dann weiss ich auch nicht.
*pffff
Nun möchte ich aber doch mal meinen selbst gewählten Moderatorenpflichten freiwillig nachkommen und hier mal ein bisschen die Luft aus dem Käse drücken...
@37414
Wie Du ja bemerkt hast, ist Dein Ansinnen vom Server aus auf x Clients eine Applikation starten zu wollen, auf Unglauben, Unverständnis und beharrliche Nachfragen gestoßen.
Natürlich ist es technisch mehr oder weniger stressarm machbar.
Dennoch würde ich Dich nochmal bitten, zwei Schritte zurückzutreten und erstmal vom gesunden Menschenverstand her zu schauen, was wohl sinnvoller ist:
a) ein Server bzw. Admin, der irgendwann (sagen wir mal um 12:47h nach dem Frühstück) einen Prozess-Start-Aufruf an seine 57 Clientschäfchen absetzt (von denen 16 grad zu Tisch sind, 12 in Besprechungen, 3 krank oder im Urlaub und 17 gerade IN der Applikation, die Du nun gerade jetzt updaten willst...
-oder-
b) eine Updatemimik a la dirtyfalco, bei der jeder Client (falls er überhaupt das Programm mal startet) beim Doppelklick die Meldung erhält:
Ich geb ja zu, die Frage is ein kleines bisschen suggestiv gestellt...
...aber ich denke wirklich, eine "Starte-jetzt-auf-allen-Clients-ein-Update"-Mimik macht vielleicht Sinn bei hochbrisanten M$-Sicherheitsupdates (obwohl auch da eine Risiko-Nutzen-Kalkulation erfolgen sollte).
Aber auf gar keinen Fall bei Client-Applikationen, die nicht von jedem genutzt werden.
Du willst doch nur gewährleisten, dass jeder, der mit der Appz arbeitet, dies mit der aktuellen Version tut. Thats all, oder?
Gruß
Biber
Nun möchte ich aber doch mal meinen selbst gewählten Moderatorenpflichten freiwillig nachkommen und hier mal ein bisschen die Luft aus dem Käse drücken...
@37414
Wie Du ja bemerkt hast, ist Dein Ansinnen vom Server aus auf x Clients eine Applikation starten zu wollen, auf Unglauben, Unverständnis und beharrliche Nachfragen gestoßen.
Natürlich ist es technisch mehr oder weniger stressarm machbar.
Dennoch würde ich Dich nochmal bitten, zwei Schritte zurückzutreten und erstmal vom gesunden Menschenverstand her zu schauen, was wohl sinnvoller ist:
a) ein Server bzw. Admin, der irgendwann (sagen wir mal um 12:47h nach dem Frühstück) einen Prozess-Start-Aufruf an seine 57 Clientschäfchen absetzt (von denen 16 grad zu Tisch sind, 12 in Besprechungen, 3 krank oder im Urlaub und 17 gerade IN der Applikation, die Du nun gerade jetzt updaten willst...
-oder-
b) eine Updatemimik a la dirtyfalco, bei der jeder Client (falls er überhaupt das Programm mal startet) beim Doppelklick die Meldung erhält:
Es ist eine neue Version verfügbar - einen Moment bitte....Update läuft....
Ich geb ja zu, die Frage is ein kleines bisschen suggestiv gestellt...
...aber ich denke wirklich, eine "Starte-jetzt-auf-allen-Clients-ein-Update"-Mimik macht vielleicht Sinn bei hochbrisanten M$-Sicherheitsupdates (obwohl auch da eine Risiko-Nutzen-Kalkulation erfolgen sollte).
Aber auf gar keinen Fall bei Client-Applikationen, die nicht von jedem genutzt werden.
Du willst doch nur gewährleisten, dass jeder, der mit der Appz arbeitet, dies mit der aktuellen Version tut. Thats all, oder?
Gruß
Biber
Also wenn ich es richtig verstanden habe (war schwierig zu lesen), dann sollte das Programm
"psexec" das richtige sein.
Es kann remote Programme starten, diese auch vorher dorthin kopieren und wieder entfernen und es kann auch so gestartet werden, das der remote Benutzer es auf seinem
Desktop sieht.
Schau Dir einfach mal die Optionen an. Es ist meiner Meinung nach von Sysinternals. Das
komplette Paket heisst PSTools.
Gruß an alle
Micha
"psexec" das richtige sein.
Es kann remote Programme starten, diese auch vorher dorthin kopieren und wieder entfernen und es kann auch so gestartet werden, das der remote Benutzer es auf seinem
Desktop sieht.
Schau Dir einfach mal die Optionen an. Es ist meiner Meinung nach von Sysinternals. Das
komplette Paket heisst PSTools.
Gruß an alle
Micha
Ich muss auch ab und zu eine Anwendung oder Batch auf einem anderen Rechner starten.
Ich lege auf dem Rechner, auf dem die Anwendung dann gestartet werden soll einen geplanten Task an. Den starte ich dann von meinem Rechner aus mittels einer Batch.
Hier ein kleines Beispiel. Es soll einfach nur sofort pcAnywhere im Host-Modus gestartet werden.
Batch auf meinem Rechner:
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.100
("pcAnywhere starten" ist der Name des geplanten Task auf dem Zielrechner.)
Dieser geplante Task startet folgende Batch auf dem Zielrechner:
"C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Symantec\pcAnywhere\Host.bhf"
Mittels "net send" lass ich mir vom Zielrechner dann bestätigen, dass die Batch auch tatsächlich ausgeführt wurde.
Torsten
Ich lege auf dem Rechner, auf dem die Anwendung dann gestartet werden soll einen geplanten Task an. Den starte ich dann von meinem Rechner aus mittels einer Batch.
Hier ein kleines Beispiel. Es soll einfach nur sofort pcAnywhere im Host-Modus gestartet werden.
Batch auf meinem Rechner:
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.100
("pcAnywhere starten" ist der Name des geplanten Task auf dem Zielrechner.)
Dieser geplante Task startet folgende Batch auf dem Zielrechner:
"C:\Dokumente und Einstellungen\All Users\Anwendungsdaten\Symantec\pcAnywhere\Host.bhf"
Mittels "net send" lass ich mir vom Zielrechner dann bestätigen, dass die Batch auch tatsächlich ausgeführt wurde.
Torsten
Nein, würde dann nicht ausgeführt.
Aber ganz einfache Lösung (besonders geeignet wenn es mehrere Zielrechner betreffen soll).
Machst dir eine Batch, in der du existierende Freigaben (am bestehen die administrativen) abfragst.
Beispiel:
IF NOT EXIST \\192.168.1.100\C$ GOTO NEXT01
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.100
:NEXT01
IF NOT EXIST \\192.168.1.101\C$ GOTO NEXT02
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.101
:NEXT01
usw.
Geht auch anders, aber so ist`s am einfachsten.
Den Task lässt du dann einfach auf deinem Rechner periodisch laufen (alle viertel Stunde oder so). Dann klappert er alle viertelstunde dein Netzwerk nach ereichbaren Rechnern ab und startet den Task bei Erfolg.
Fügst nach "schtasks" noch eine Zeile für`s Protokoll ein, dann weißt du jederzeit wer alles erreichbar war.
Ich würde dann aber gleich bei der Batch-Datei der Zielrechner den Errorlevel in die gleiche Protokoll-Datei reinschreiben, damit du weißt, ob der Task auch erfolgreich ausgeführt werden konnte.
Torsten
Aber ganz einfache Lösung (besonders geeignet wenn es mehrere Zielrechner betreffen soll).
Machst dir eine Batch, in der du existierende Freigaben (am bestehen die administrativen) abfragst.
Beispiel:
IF NOT EXIST \\192.168.1.100\C$ GOTO NEXT01
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.100
:NEXT01
IF NOT EXIST \\192.168.1.101\C$ GOTO NEXT02
schtasks /run /tn "pcAnywhere starten" /s 192.168.1.101
:NEXT01
usw.
Geht auch anders, aber so ist`s am einfachsten.
Den Task lässt du dann einfach auf deinem Rechner periodisch laufen (alle viertel Stunde oder so). Dann klappert er alle viertelstunde dein Netzwerk nach ereichbaren Rechnern ab und startet den Task bei Erfolg.
Fügst nach "schtasks" noch eine Zeile für`s Protokoll ein, dann weißt du jederzeit wer alles erreichbar war.
Ich würde dann aber gleich bei der Batch-Datei der Zielrechner den Errorlevel in die gleiche Protokoll-Datei reinschreiben, damit du weißt, ob der Task auch erfolgreich ausgeführt werden konnte.
Torsten
Ach so, vergessen.
Du musst für die Ausführung von "schtasks" auf dem Zielrechner natürlich lokaler Admin sein. Ich habe für solche Zwecke in der Domäne einen speziellen User mit Admin-Rechten angelegt. Wenn ich den geplanten Task auf der Zielmaschine anlege gebe ich als Userkennung zur Ausführung diesen User an und entziehe dem normalen User jegliche Berechtigung auf den Task.
Damit sieht der normale User weder den geplanten Task, noch dessen Ausführung während der Laufzeit.
Wenn es alle Maschinen im LAN betrifft kannst du in meinem Beispiel natürlich eine Zählschleife einsetzen.
Beispiel:
SET /a X = 0
:START
SET /a X = X+1
IF %X%==199 GOTO ENDE
IF NOT EXIST "\\192.168.1.%X%\C$ GOTO START
schtasks ...
:ENDE
SET X =
EXIT
Oder alternativ statt nach einer Freigabe einen einfachen Ping nutzen:
ping -n 1 192.168.1.100 | find /i "Antwort"
IF NOT %ERRORLEVEL% == 0 GOTO NEXT01
schtasks ...
:NEXT01
usw.
Torsten
Du musst für die Ausführung von "schtasks" auf dem Zielrechner natürlich lokaler Admin sein. Ich habe für solche Zwecke in der Domäne einen speziellen User mit Admin-Rechten angelegt. Wenn ich den geplanten Task auf der Zielmaschine anlege gebe ich als Userkennung zur Ausführung diesen User an und entziehe dem normalen User jegliche Berechtigung auf den Task.
Damit sieht der normale User weder den geplanten Task, noch dessen Ausführung während der Laufzeit.
Wenn es alle Maschinen im LAN betrifft kannst du in meinem Beispiel natürlich eine Zählschleife einsetzen.
Beispiel:
SET /a X = 0
:START
SET /a X = X+1
IF %X%==199 GOTO ENDE
IF NOT EXIST "\\192.168.1.%X%\C$ GOTO START
schtasks ...
:ENDE
SET X =
EXIT
Oder alternativ statt nach einer Freigabe einen einfachen Ping nutzen:
ping -n 1 192.168.1.100 | find /i "Antwort"
IF NOT %ERRORLEVEL% == 0 GOTO NEXT01
schtasks ...
:NEXT01
usw.
Torsten
Meine Lösung war natürlich mehr dazu gedacht, wenn auf mehreren Rechnern ein bestimmtes Programm öfters ausgeführt werden soll.
Die Frage ist ja auch, ob es um Rechner, vor denen ein Mitarbeiter sitzt, oder um beispielsweise Server. (Da könnte ich ja ohnehin über Terminal eine eigene Session öffnen.)
Beim XP beende ich dagegen aus der Ferne die User-Session. Wenn er gerade am Arbeiten ist muss man halt mit Datenverlusten der geöffneten Dokumente rechnen.
Torsten
Die Frage ist ja auch, ob es um Rechner, vor denen ein Mitarbeiter sitzt, oder um beispielsweise Server. (Da könnte ich ja ohnehin über Terminal eine eigene Session öffnen.)
Beim XP beende ich dagegen aus der Ferne die User-Session. Wenn er gerade am Arbeiten ist muss man halt mit Datenverlusten der geöffneten Dokumente rechnen.
Torsten