lukid20
Goto Top

Batch Datei mit MSG Befehl

Hallo Zusammen

Ich habe ein kleines Problem und komme nicht weiter, da ich mit CMD Befehle nicht erfahren bin.

Ich will eine MSG Nachricht absetzen, dass an alle Computer in einer .txt Datei schickt.
Bis jetzt habe ich folgendes zusammen aber mir fehlt irgendwie noch eine Schleife die abarbeitet wird.

set /p nachricht=Nachricht eingeben:
set /p computerliste=%CD%\computer.txt
msg * /SERVER:%computerliste%.fmgruppe.ch %nachricht%

Danke für eure Hilfe

mfg luki

Content-ID: 218504

Url: https://administrator.de/forum/batch-datei-mit-msg-befehl-218504.html

Ausgedruckt am: 02.02.2025 um 13:02 Uhr

rookie
rookie 04.10.2013 um 11:57:35 Uhr
Goto Top
Hi,

am Besten mit einer FOR-Schleife:

set /p nachricht=Nachricht eingeben:
for /f %f in (Computerliste.txt) do
msg * /SERVER:%f.fmgruppe.ch %nachricht%

So in etwa müsste das dann aussehen.
rubberman
rubberman 04.10.2013 um 12:09:05 Uhr
Goto Top
Hallo lukid20.

Frage vorab: Funktioniert für dich der MSG Befehl remote überhaupt? Das heißt, sind die entsprechenden Registryeinstellungen auf jedem involvierten Rechner durchgeführt?

Grüße
rubberman
lukid20
lukid20 04.10.2013 um 12:19:50 Uhr
Goto Top
Hallo, ja das habe ich alles schon gemacht und funktioniert face-smile
rubberman
rubberman 04.10.2013 aktualisiert um 12:49:00 Uhr
Goto Top
Hallo lukid20,

leider kann ich es nicht testen, da auf meiner "Starter" Version MSG gar nicht erst verfügbar ist ...

Mit @filename kannst du die Datei spezifizieren. Da du die Batchdatei vermutlich als Admin ausführen musst, bietet sich %~dp0 statt %cd% an, um den Pfad zur Datei korrekt rüber zu bekommen.
Etwa so:
@echo off &setlocal
set /p "nachricht=Nachricht eingeben: "  
set  "computerliste=%~dp0computer.txt"  
msg @"%computerliste%" /SERVER:ServerAnDemDieComputerHängen "%nachricht%"  
Grüße
rubberman
lukid20
lukid20 04.10.2013 um 13:14:00 Uhr
Goto Top
Ok danke für deine Antwort.

Habe es versucht aber hat nocht nciht ganz geklappt.
Ich habe es noch so angepasst:

@echo off &setlocal


set /p "nachricht=Nachricht eingeben: "
set "computerliste=%~dp0computer.txt"
msg * /SERVER:@"%computerliste%".fmgruppe.ch "%nachricht%"

Aber von wo weis der Befehl, dass er diesen Befehl für jede Zeile (in der computer.txt Datei) einmal ausführen muss?
rookie
rookie 04.10.2013 um 13:21:51 Uhr
Goto Top
Hast du meine Antwort nicht gelesen?
lukid20
lukid20 04.10.2013 um 13:34:30 Uhr
Goto Top
Doch gerade eben, das klappt so weit auch. Danke!

Nur habe ich noch ein kleines Problem:

wenn ich es im CMD direkt eingebe funktioniert es.
for /f %f in (Computer.txt) do msg * /SERVER:%f.fmgruppe.ch test

In der Batch Datei leider noch nicht:
@echo off &setlocal
set /p "nachricht=Nachricht eingeben: "
for /f %f in (computer.txt) do
msg * /SERVER:%f.fmgruppe.ch %nachricht%

mache ich noch etwas falsch?
rookie
rookie 04.10.2013 um 13:38:20 Uhr
Goto Top
Schalte mal das Echo wieder ein und lass dir die Ausgaben in eine Datei schreiben: deinebat.bat > ausgabe.txt

In der ausgabe.txt siehst du dann was eigentlich passiert, wenn deine Batch läuft.
rubberman
rubberman 04.10.2013 aktualisiert um 13:44:51 Uhr
Goto Top
Du hast doch bestimmt in einer Shell mit Admin Rechten getestet, oder?
Im Batch dann
<code type="plain>
for /f "usebackq" %%f in ("%~dp0computer.txt") do msg * /SERVER:%%f.fmgruppe.ch %nachricht%

... da der Batch in System32 ausgeführt wird und deine Textdatei nicht findet und die Prozentzeichen der FOR Variable verdoppelt werden müssen.

Grüße
rubberman
lukid20
lukid20 04.10.2013 um 13:53:31 Uhr
Goto Top
Ok Super!! hat geklappt Danke vielmals face-smile
lukid20
lukid20 04.10.2013 aktualisiert um 14:00:45 Uhr
Goto Top
Schlussendlich:

@echo off &setlocal


set /p "nachricht=Nachricht eingeben: "
for /f "usebackq" %%f in ("%~dp0computer.txt") do msg * /SERVER:%%f.fmgruppe.ch %nachricht%


Noch ein kleiner Tipp für die nächsten: Die Batch datei darf nicht msg heissen! Bsp. msg1 geht ;)

Danke!
rubberman
rubberman 04.10.2013 um 14:13:01 Uhr
Goto Top
Die Batch datei darf nicht msg heissen!
Kardinalsfehler face-wink
Konkret darf eine Batchdatei nie so heißen, wie einer der Befehle die darin verwendet werden (egal welcher).

Grüße
rubberman
DerWoWusste
DerWoWusste 04.10.2013, aktualisiert am 08.10.2013 um 00:07:34 Uhr
Goto Top
Und zum Abschluss: Deine Nachricht soll doch sicherlich so lange sichtbar sein, bis sie weggeklickt wird, oder? msg-Nachrichten schließen sich jedoch nach 30 Sekunden von alleine, es sei denn, man benutzt den Schalter /t:0