Batch-Datei um Internetverbindung zu halten

Stanload

Ruhrpottzebras
Hallo zusammen,

da meine mobile Internetverbindung mich immer wieder kickt, wenn ich nicht aktiv bin, wollte ich mir eine kleine Datei schreiben, die mich immer schön online bleiben lässt. Eigentlich recht einfach dachte ich mir.

Das hier hält zwar die Verbindung, aber jede Sekunde muss es auch nicht unbedingt sein:

Wie bekomme ich um den ping-Befehl eine einfache Schleife, die den folgenden Befehl z.B. alle 60 Sekunden aufruft:

Bis denn
 
Stelle einfach deinen Mailclienten so ein, das er in bestimmten Zeitabständen neue Mails abruft.
Nen Messanger tut da auch gute Dienste :)
 
Die ganze Arbeit nehme ich Dir nicht ab. Aber mal 2 Tipps:

Die Schleife lässt sich mit dem Befehl "for" realisieren.

for /?
Führt einen Befehl für jede einzelne Datei für einen Satz von Dateien aus.

FOR %Variable IN (Satz) DO Befehl [Parameter]

%Variable Ein ersetzbarer Parameter bestehend aus einem einzelnen
Buchstaben.
(Satz) Ein Satz von mindestens einer Datei. Platzhalter sind zulässig.
Befehl Befehl, der für jede Datei ausgeführt werden soll.
Parameter Parameter und Optionen für den angegebenen Befehl.

Um den FOR-Befehl in einem Batchprogramm zu verwenden, geben Sie %%Variable
statt %Variable an. Beachten Sie die Groß-/Kleinschreibung bei Variablen-
namen, %i und %I sind nicht identisch.

Wenn die Befehlserweiterungen aktiviert sind, werden folgende
Ergänzungen für den FOR-Befehl unterstützt:

FOR /D %Variable IN (Satz) DO Befehl [Parameter]

Wenn der Satz Platzhalter enthält, dann bezieht sich der FOR-Befehl
auf Verzeichnisse und nicht auf Dateien.

FOR /R [[Laufwerk:]Pfad] %Variable IN (Satz) DO Befehl [Parameter]

Der FOR-Befehl wird ausgehend vom Verzeichnis [Laufwerk:]Pfad (als
Stammverzeichnis) für jedes darunterliegende Verzeichnis ausgeführt.
Wenn kein Verzeichnis nach der /R-Option angegeben ist, wird das aktuelle
Verzeichnis verwendet. Wenn der Satz nur einen einzelnen Punkt als
Zeichen (.) enthält, wird nur die Verzeichnisstruktur aufgelistet.

FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]

Der Satz ist eine Folge von Zahlen von Start bis Ende und der
angegebenen Schrittweite. So erstellt (1,1,5) die Folge 1 2 3 4 5 und
(5,-1,1) erstellt die Folge (5 4 3 2 1).

FOR /F ["Optionen"] %Variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN ("Zeichenfolge") DO Befehl [Parameter]
FOR /F ["Optionen"] %Variable IN (Befehl) DO Befehl [Parameter]

oder, unter Verwendung der Option "usebackq":

FOR /F ["Optionen"] %variable IN (Dateiensatz) DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN ("Zeichenfolge") DO Befehl [Parameter]
FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter]


Der Dateiensatz besteht aus einem oder mehreren Dateinamen. Jede Datei
wird geöffnet, gelesen und bearbeitet, dann wird mit der nächsten Datei
des Satzes fortgefahren. Die Bearbeitung einer Datei erfolgt zeilenweise,
jede einzelne Textzeile wird ausgewertet und in die entsprechenden Token
(keinen oder mehrere) zerlegt. Die Befehle in der FOR-Schleife werden dann
mit den Variablenwerten (d.h. den gefunden Zeichenfolgen bzw. Token)
aufgerufen. Standardmäßig liefert /F den ersten, durch ein Leerzeichen
getrennten Token von jeder Zeile in jeder Datei. Leerzeilen werden
übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise
durch den Parameter "Optionen" überschrieben werden. Das ist eine
Zeichenfolge in Anführungszeichen, welche eines oder mehrere Schlüssel-
wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese
Schlüsselwörter sind:

eol=c - Gibt das Zeichen für Zeilenendekommentare an
(nur eins).
skip=n - Gibt die Anzahl der Zeilen an, die am Anfang einer
Datei übersprungen werden.
delims=xxx - Gibt einen Satz von Trennzeichen an. Diese ersetzen
die Standardtrennzeichen TAB und Leerzeichen.
tokens=x,y,m-n - Gibt an, welche Token von jeder Zeile an die
FOR-Schleife weitergegeben werden.
Das führt dazu, dass zusätzliche Variablen erstellt
werden. Mit der Form m-n wird dabei ein Bereich vom
m-ten bis zum n-ten Token angegeben. Wenn das letzt
Zeichen ein Sternchen ist, wird eine zusätzliche
Variable deklariert, die den verbleibenden Text
dieser Zeile enthält.
usebackq - Gibt an, dass die neue Semantik in Kraft ist,
wobei eine Zeichenfolge in umgekehrten Anführungs-
zeichen als Befehl ausgeführt wird und eine
Zeichenfolge in Anführungszeichen ein literaler
Befehl ist, der die Verwendung von doppelten
Anführungszeichen um Dateinamen in Dateinamens-
sätzen erlaubt.

Einige Beispiele:

FOR /F "eol=; tokens=2,3* delims=, " %i in (Datei.txt) do @echo %i %j %k

Dadurch wird jede Zeile in der Datei Datei.txt ausgewertet, Zeilen die
mit einem Semikolon beginnen werden ignoriert, für den 2. und 3. Token
jeder Zeile werden die Befehle in der FOR-Schleife ausgeführt. Trenn-
zeichen sind Kommas und/oder Leerzeichen. In der FOR-Schleife wird der
Ausdruck %i verwendet, um den 2. Token zu erhalten, %j für den 3. Token
und %k, um alle übrigen Token zu erhalten. Dateinamen, die Leerzeichen
enthalten, müssen Sie innerhalb doppelter Anführungszeichen angeben. Dazu
müssen Sie die Option "usebackq" verwenden. Andernfalls werden doppelte
Anführungszeichen zur Definition eines auszuwertenden Literals
verwendet.

Dabei ist %i explizit deklariert, während %j und %k implizit durch die
Option "tokens=" deklariert werden. Sie können bis zu 26 Token durch diese
Option angeben, vorausgesetzt, es wird dadurch nicht versucht, eine
Variable mit einem Buchstaben größer als "z" zu deklarieren. Bedachten
Sie, dass FOR-Variablen aus nur einem Buchstaben bestehen, Groß-/Klein-
schreibung beachtet werden muss, dass sie global sind und nicht mehr als
insgesamt 52 gleichzeitig aktiv sein dürfen.

Sie können den Befehl FOR /F auch direkt mit einer Zeichenfolge verwenden,
indem Sie die Zeichenfolge in doppelten Anführungszeichen als Dateiensatz
zwischen den Klammern angeben. Diese Zeichenfolge wird dabei als
einzelne Zeile einer Datei betrachtet und ausgewertet.

Schließlich können Sie den Befehl FOR /F auch verwenden, um die Ausgabe
eines Befehls auszuwerten. Dazu geben Sie eine Zeichenfolge in einfachen
Anführungszeichen als Dateiensatz zwischen den Klammern an. Diese
Zeichenfolge wird dabei als Befehlszeile betrachtet und von einer unter-
geordneten CMD.EXE ausgeführt. Die Ausgabe dieses Befehls wird dann wie
eine normale Datei ausgewertet. Das folgende Beispiel listet die Um-
gebungsvariablen im aktuellen Verzeichnis auf:

FOR /F " usebackq delims==" %i IN (`set`) DO @echo %i

Zusätzlich wurde die Ersetzung von Verweisen auf FOR-Variablen erweitert.
Sie können jetzt folgende Syntax verwenden:

%~I - Expandiert %I und entfernt alle umschließenden
Anführungszeichen (").
%~fI - Expandiert %I zu einem vollständigen Dateinamen.
%~dI - erstellt nur den Laufwerkbuchstaben von %I.
%~pI - erstellt nur den Pfad von %I.
%~nI - erstellt nur den Dateinamen von %I.
%~xI - erstellt nur die Dateierweiterung von %I.
%~sI - erstellter Pfad enthält nur kurze Dateinamen.
%~aI - erstellt die Dateiattribute von %I.
%~tI - erstellt Datum und Zeit von %I.
%~zI - erstellt die Dateigröße von %I.
%~$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse und expandiert die erste
gefundene Datei %I zu dem vollständigen Dateinamen.
Wenn der Name der Umgebungsvariablen nicht definiert
ist oder diese Datei bei der Suche nicht gefunden wurde,
wird dieser Parameter zu einer leeren Zeichenfolge
expandiert.

Diese Parameter können auch miteinander kombiniert werden:

%~dpI - erstellt den Laufwerkbuchstaben und Pfad von %I.
%~nxI - erstellt den Dateinamen und die Dateierweiterung von %I.
%~fsI - Expandiert %I zu einem vollständigen Namen, der nur
kurze Dateinamen enthält.
%~dp$PATH:I - Durchsucht die in der PATH-Umgebungsvariablen
angegebenen Verzeichnisse nach %I und erstellt den
Laufwerkbuchstaben und Pfad der ersten gefundenen Datei.
%~ftzaI - Expandiert %I zu einer Zeile, die der Ausgabe des DIR-
Befehls entspricht.

In den angegebenen Beispielen können %I und PATH durch andere gültige
Werte ersetzt werden. Der Ausdruck %~ wird durch einen gültigen Variablen-
namen für FOR abgeschlossen. Die Verwendung von Großbuchstaben für die Namen
von Variablen, wie z. B. %I, macht diese Ausdrücke leichter lesbar und
vermeidet Verwechslungen mit den eigentlichen Parametern.




Eine Zeitfunktion ist in DOS nicht vorgesehen. Du kannst aber den choice-Befehl dafür missbrauchen

choice /?
CHOICE [/C Optionen] [/N] [/CS] [/T Zeitlimit /D Auswahl] [/M Text]

Beschreibung:
Mit diesem Programm können Benutzer ein Element aus einer
Auswahlliste auswählen und den Index der Auswahl wiedergeben.

Parameterliste:
/C Optionen Bestimmt die zu erstellende Auswahlliste.
Standardliste ist "JN".

/N Blendet die Auswahlliste in der Aufforderung aus.
Die Meldung vor der Aufforderung wird dennoch
angezeigt und die Optionen sind aktiviert.

/CS Aktiviert die Unterscheidung von Groß-/Kleinschreibung
Standardmäßig wird nicht zwischen Groß- und
Kleinschreibung unterschieden.

/T Zeitlimit Bestimmt die Länge der Pause vor der Auswahl
in Sekunden. Gültige Wert sind 0 bis 9999.
Der Wert 0 bedeutet keine Pause und Verwendung
der Standardauswahl.

/D Auswahl Bestimmt die Standardauswahl nach nnnn Sekunden.
Zeichen müssen im Auswahlsatz durch die Option
/C und nnnn mit Option /T festgelegt werden.

/M Text Legt fest, welche Meldung vor der Aufforderung
angezeigt wird. Ohne Angabe wird nur die
Aufforderung angezeigt.

/? Zeigt diese Hilfe an.

HINWEIS:
Die Umgebungsvariable ERRORLEVEL wird auf den Index des
Schlüssels gesetzt, der aus dem Auswahlsatz ausgewählt wurde. Die
erste Auswahl gibt einen Wert von 1, die zweite einen Wert von 2
usw. Falls der Benutzer eine unzulässige Taste drückt, wird ein
akustisches Signal wiedergegeben. Bei einem Fehlerzustand wird
ein ERRORLEVEL von 255 wiedergegeben. Beim Drücken auf STRG+Untbr
oder STRG+C wird ein ERRORLEVEL-Wert von 0 wiedergegeben.
Führen Sie die ERRORLEVEL-Parameter in absteigender Reihenfolge
auf, falls Sie diese in einem Batchprogramm verwenden.

Beispiele:
CHOICE /?
CHOICE /C JNA /M "Drücken Sie J für Ja, N für Nein oder A für Abbrechen."
CHOICE /T 10 /C JNA /CS /D J
CHOICE /C ab /M "Wählen Sie a für Option 1 und b für Option 2."
CHOICE /C ab /N /M "Wählen Sie a für Option 1 und b für Option 2."


Viel Spass ;)
 
Kannst Du mir mal erklären, wofür man so einen Quatsch braucht? Irgendwie versteh ich den sittlichen Nährwert nicht.

Recht einfach:
unterwegs bin ich mit meinem Netbook per UMTS-Stick online. Da mein Provider wohl Spaß dran hat inaktive Zugänge zu kicken, ich dies aber nicht möchte, möchte ich online bleiben. Es ist recht ärgerlich sich ständig neu zu verbinden, bzw. merkt man es teils nicht, dass man offline ist (der UMTS-Stick gaukelt einem einen Online-Zustand vor). Wenn man dann was schreibt usw. und dann der Spaß verloren geht ist es ziemlich ärgerlich.

Hab meinen Provider auch schon nach eine Lösung gefragt, aber die scheinen meine Anfrage geschickt zu ignorieren ... also bleibt mir nichts anderes übrig als so zu verfahren *g*.
 
Versuchs mal hiermit, unter Vista läuft es:

:10
ping www.google.de -l 1
choice /T 30 /D J
goto 10

Das ganze als Textdokument schreiben und als *.bat speichern.
Den "for"-Befehl kannst Du Dir schenken...

Choice ist hier der workaround, da batch eigentlich keine Zeitfunktion hat.
 
Zuletzt bearbeitet von einem Moderator:
Danke Hausi für Coding, aber leider funktioniert es nicht, da WinXP den CHOICE-Befehl nicht kennt. Kann es sein, dass Du ein anderes Betriebssystem hast?
 
Bei mir läuft es unter vista.

Was mich wundert ist, dass es choice bereits unter DOS 6 gab.
 
Standard ist Choise unter XP nicht. Schön mal eine alte DOS 6.0 Diskette :eek: ;) :cool: suchen und choise.com nach c:\windows kopieren, dann lüppt datt ;) :D
 
Dann ping aber nicht Google, sondern irgendeinen Server bei deinem Provider, damit der unnütze Traffic nicht auch noch das Netz belastet.
 
Zurück
Oben