Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fragen rund um Bat-Befehle

Frage Entwicklung Batch & Shell

Mitglied: JK87

JK87 (Level 1) - Jetzt verbinden

23.09.2005, aktualisiert 30.09.2005, 11656 Aufrufe, 20 Kommentare

Ja, ja ich bins wieder einmal der "ForenDurchForster"!

Möchte das meine Batch-Datei den Bat-Vorgang nur durchführt wenn der PC in einem bestimmten Netz ist. zB durch pingen eines proxy

Wie kann ich das machen, dass die Batch-Datei dauernt (vom Start des Computers an) nach dem Proxy sucht und nur wenn sie Ihn findet den Vorgang durchführt und falls sie den Vorgang durchgeführt hat und der Proxy wieder verschwindet (nicht mehr Vorhanden ist) das dann ein andere Befehl durchgeführt wird?

Ist das möglich und frist das eh nicht zuviele von der Rechenpower?

THX, for all answers!

JK
Mitglied: FaBMiN
23.09.2005 um 11:40 Uhr
schreibs ins logonscript von dem jeweiligen Netz
Bitte warten ..
Mitglied: JK87
23.09.2005 um 12:39 Uhr
Wie meinst du das?
Gibt es nicht die Möglichkeit das mit Batch zulösen?

JK
Bitte warten ..
Mitglied: FaBMiN
23.09.2005 um 13:05 Uhr
Besitzt Du einen Server auf dem die Profile liegen?
Bitte warten ..
Mitglied: Lord-Helmi
23.09.2005 um 13:10 Uhr
Hallo,

du könntest über den Zeitplandienst deine Batch-Datei regelmäßig starten lassen. Diese Batchdatei sendet dann einen Ping an eine bestimmte IP-Adresse und schreibt das Ergebniss in eine Textdatei.

Mittels einer For-Schleife kannst du nun diese Textdatei analysieren und gucken, ob dein Ping erfolgreich war und dann den entsprechenden Befehl ausführen lassen.

------> Beispiel <------
ping xxx.xxx.xxx.xxx >iplog.txt
for /F "skip=3 tokens=1,2,3,4" %%a in (iplog.txt) do set iptest=%%d

If not %iptest%==Zielnetz goto yes
goto no

:yes
net send %username% erfolgreich!
goto ende

:no
net send %username% erfolglos!
goto ende

:ende
------> Beispiel Ende <------

Gruß
Michael
Bitte warten ..
Mitglied: FaBMiN
23.09.2005 um 13:11 Uhr
Zitat wenn der PC in einem bestimmten Netz ist gehts nicht darum?
Bitte warten ..
Mitglied: Lord-Helmi
23.09.2005 um 13:15 Uhr
Hallo,

nach der Beschreibung bin ich einfach mal davon ausgegangen, dass der Proxy, welchen er anpingen möchte, aus einem anderen Netz heraus nicht erreichbar ist.

Habe ich da was falsch vertstanden?

Gruß
Michael
Bitte warten ..
Mitglied: JK87
23.09.2005 um 15:49 Uhr
Nein, du musst das so sehen, als wäre ich ein Client.
Bitte warten ..
Mitglied: JK87
23.09.2005 um 15:51 Uhr
Mit dem proxy kann man ganz normal ins internet er ist somit erreichbar!

Hat noch jemand einen anderen vorschlag ausser anpingen?

JK
Bitte warten ..
Mitglied: Lord-Helmi
24.09.2005 um 07:32 Uhr
Hallo,

vielleicht beschreibst du uns mal etwas genauer, was du machen willst. Um welchen Proxy geht es und wann ist/soll er erreichbar sein?

Gruß
Michael
Bitte warten ..
Mitglied: JK87
24.09.2005 um 10:16 Uhr
Wie gesagt, ich möchte das die Batchdatei nur dann ausgeführt wird wenn der Proxy (also eine bestimmte IP, zB 10.10.0.1) verfügbar ist.
Und wenn er nicht Verfügbar ist soll er einen anderen Befehl ausführen.

thx

JK
Bitte warten ..
Mitglied: Lord-Helmi
25.09.2005 um 08:07 Uhr
Hallo,

genau dies macht das von mir als Beispiel angegebene Script. Es sendet einen Ping an eine bestimmte IP-Adresse und schreibt das Ergebniss des Ping's in eine Datei mit dem Namen iplog.txt.

Dann läuft eine for-Schleife über die so erstellte Datei drüber und schreibt den 4. Wert einer jeden Zeile in eine Variable mit dem Namen iptest. Da der Wert bei Erfolg und Mißerfolg des Ping's unterscheidet, wird die Variable jetzt mit dem Wert verglichen, der bei einem erfolglosen Ping zurückgegeben worden wäre.

Stimmen die beiden Werte nicht überein, geht das Script zur Sprungmarke yes für einen erfolgreichen Ping, andernfalls zu no für nicht erfolgreich.

Es werden dann die unter der jeweiligen Sprungmarke angegebenen Befehle ausgeführt.

Das ganze habe ich unter NT 4.0 erstellt, sollte mit kleinen Änderungen aber auch auf 2k und XP laufen. Du musst dir nur die Ausgaben, die vom Script in die Variable iptest geschrieben werden, ansehen und das Script dann insoweit abändern.

Gruß
Michael
Bitte warten ..
Mitglied: JK87
27.09.2005 um 09:43 Uhr
Erstmal Danke.

Hab nur das Problem, dass die Datei ab der 4. Zeile dann auch immer die 4. Werte übernimmt!
Wie kann ich die Datei so schreiben, dass die 1-3 und ab der 8. Zeile die Werte ignoriert werden.

Nochmals Danke, sieht wirklich sehr gut aus nur etwas langsam aber ist verkraft bar wenn es keine andere Möglichkeit gibt.

thx

JK
Bitte warten ..
Mitglied: Biber
27.09.2005 um 18:22 Uhr
Moin JK87,

ich würde es an dieser Stelle nicht so kompliziert machen.
In Lord_Helmi's Beispielbatch eine Zeile vorschalten:
for /f %%i in ('Ping -n 1 my.proxy.server.de ^|Find "Antwort"') do (goto yes)||(goto no)
bzw.
for /f %%i in ('Ping -n 1 my.proxy.server.de ^|Find "Reply"') do (goto yes)||(goto no)

Wenn Du lieber diesen FOR-Befehl oben verwenden möchtest, dann reicht trotzdem ein einmaliges "Ping" (also Parameter n 1).
Und die überzähligen Zeilen entsorgst Du eben mit dem Find-Befehl (s.o.).

Aber tun sollte es auch die Zeile von mir... Du willst ja von dem Proxy nur wissen, ob er erreichbar ist und nicht seine Lebensgeschichte und sein Sternzeichen.

Frank / der Biber aus Bremen
[Edit]Die For-Zeile stimmt nur sinngemäß, siehe Berichtigung unten.[/Edit]
Bitte warten ..
Mitglied: JK87
28.09.2005 um 10:22 Uhr
@all answers: thx for all

@Biber: deine Zeile gefällt mir sehr gut und funkt wunderbar bis auf "(goto yes)||(goto no)" das hat er nicht geschluckt, hab das Problem aber gelöst

JK
Bitte warten ..
Mitglied: Biber
28.09.2005 um 19:30 Uhr
Moin JK87,

sorry, gestern abend hat Werder gespielt, da hab ich wohl ein paar Klammern falsch gesetzt, weil ich mit den Gedanken woanders war.
Als ich eben grad noch einen Blick auf den Unsinn von gestern geworfen hatte, musste ich selber lachen.

Also, zur Richtigstellung:
Folgende Anweisung belegt nur unnötigerweise kostbaren Plattenplatz:
for /f %%i in ('Ping -n 1 my.proxy.server.de ^|Find "Antwort"') do (goto yes)||(goto no)
(läuft immer in die "do (goto yes)"-Anweisung; der ODER-Fall kann nie erreicht werden)
Ist natürlich Schwachsinn, so wie die Klammern gesetzt sind. Bitte nie in einem Multiple-Choice-Test an der VHS so was ankreuzen.

Richtiger:
(for /f %%i in ('Ping -n 1 my.proxy.server.de ^|Find "Antwort"') do goto yes)||goto no

(Wenn im Ping-Output "Antwort" gefunden wird, dann ist er Online, wenn nicht "goto no")

*Peinlich, sowas...
..und jetzt schreib ich mir erst mal einen Batch, der 100x schreibt:
Ich werde keine ungetesteten Oneliner mehr posten!
Ich werde keine ungetesteten Oneliner mehr posten!
Ich werde keine ungetesteten Oneliner....

Biber
Bitte warten ..
Mitglied: JK87
28.09.2005 um 19:55 Uhr
Macht ja nichts!
Ist ja nichts passiert!

JK
Bitte warten ..
Mitglied: JK87
29.09.2005 um 16:58 Uhr
Hab noch Probleme!

Wie kann ich mehrere Befehle bei yes/no ausführen lassen und falls einer nicht funktioniert, dass dieser einfach übersprungen wird?
Kann man den Proxy in einer INI-Datei angeben (Proxy=10.10.0.1) welcher von dort dann zum pingen importiert wird?

Danke im voraus.

JK
Bitte warten ..
Mitglied: Biber
29.09.2005 um 23:32 Uhr
nAbend JK87,
so viele Fragen...
> Wie kann ich mehrere Befehle bei yes/no ausführen lassen...
Indem Du sie untereinander in "Blöcken" gruppierst. Siehe unten.

>.... und falls einer nicht funktioniert, dass dieser einfach übersprungen wird?
Ist ein Widerspruch. Geht nur eins von beiden *gg
Ich vermute, Du meinst, wenn ein Fehler auftritt, willst Du nicht, dass er auf den Bildschirm durchschlägt?
Falls Du das meinst: Alle Ausgaben und Fehlermeldungen ins Nirwana lenken ( ">nul" )
und selber prüfen, ob alles ok ist (Errorlevel ist 0, d.h. ein &&-UND-Befehl wird ausgeführt ) oder
ob Fehler (Errorlevel <>0 ), d.h. ein ||-ODER-Befehl wird ausgeführt.
Beispiel auch unten beim Ping.

>Kann man den Proxy in einer INI-Datei angeben (Proxy=10.10.0.1) welcher von dort dann zum pingen importiert wird?
Ja. Schmucklose Variante:
In einer Textdatei genau EINE Zeile nur mit der IP.
01.
---Beispiel Inhalt c:\meineconfig\MyIP.txt 
02.
10.10.0.1 
03.
---ende Inhalt c:\config\MyIP.txt
Im Batch diesen Inhalt in eine Variable namens MeineIP lesen...
01.
--- Beispielbätch1.Bat 
02.
... 
03.
Set /p MeineIP=&ltc:\config\MyIP.txt 
04.
... 
05.
(Ping -n 1 %meineIP% | find "Antwort" >nul) || goto MeineIPOffline 
06.
::wenn der batch hier ankommt, war kein Fehler.. also Online 
07.
:MeineIPOnline 
08.
...(AnweisungAWennOnline ) 
09.
...(AnweisungBWennOnline ) 
10.
...(AnweisungCWennOnline) 
11.
::---- Ende Block MeineIPOnline 
12.
goto ganzweitunten 
13.
 
14.
:MeineIPOffline 
15.
Echo IP %MeineIP% ist nicht erreichbar! 
16.
...(Fehlerbehandlung)... 
17.
... 
18.
::---Ende Block MeineIPOffline 
19.
goto ganzweitunten 
20.
.... 
21.
... (Jahre später...) 
22.
... 
23.
:ganzweitunten 
24.
...(Aufräumarbeiten, z.B. Variablen oder Tmp-Dateien löschen) 
25.
Set MeineIP= 
26.
.... 
27.
::EndOfTheWorld 
28.
::-------ende BeispielBätch1.bat
Bisschen schönere Variante einer Ini-Datei c:\config\meineIPs.ini
---Inhalt--
[AlleIPs]
StandardIP=10.10.0.1
ErsatzIP=10.10.80.3
SchmuddelIP=0.190.666.666
...
----Ende c:\config\meineIPs.ini

Lesen der Variablen im Batch (bei Bedarf):
01.
---- beispielbatch2.bat 
02.
... 
03.
... 
04.
Set meineIP=0.0.0.0 
05.
call :IpTest StandardIP 
06.
if Errorlevel 1 call :IpTest ZweitIP 
07.
if Errorlevel 1 call :IpTest DrittIP 
08.
if Errorlevel 1 call :IpTest SchmuddelIP 
09.
if errorlevel 1 goto HatKeinZweck 
10.
:: ... die Vorzeile tritt in Aktion, wenn alles scheitert.  
11.
:: Sonst kannst Du in der nächsten Zeile weiterbätcheln 
12.
echo Verwende jetzt IP %meineIP%, denn die funktioniert! 
13.
... 
14.
... (weitere Aktionen) 
15.
... 
16.
 
17.
goto :eof 
18.
... 
19.
... 
20.
:IpTest 
21.
(type meineips.ini|find /i "%1" >nul) || goto :eof 
22.
::die Vorzeile läuft auf Fehler und RETURNt, wenn kein Wert %1 (z.B. StandardIP, in der *ini-Datei steht 
23.
for /f "tokens=1,2 delims==" %%i in ('type meineips.ini^|find /i "%1"') do Set MeineIP=%%j 
24.
Ping -n 1 %meineIP% | find "Antwort" >nul 
25.
:: jetzt ist Errorlevel=0, wenn ping Erfolg hatte, sonst <>0. Auswertung oben 
26.
goto :eof 
27.
-------- ende beispielbatch2.bat 
HTH & HANN
Biber

[Edit] Die Zeile "Set /p MeineIP=.." hat hat es natürlich zerrissen.. HTML-Tags..
jetzt ist der Rest der Zeile sichtbar. Sorry. [/Edit]
Bitte warten ..
Mitglied: JK87
30.09.2005 um 09:28 Uhr
thx

Ist es nicht möglich, dass Daten von einer INI-Datei in eine Batchdatei importiert werden kann (zB Proxy=10.10.0.1, Port=8080, import nur immer der Werte)?

>.... und falls einer nicht funktioniert, dass dieser einfach übersprungen wird?
Meinte ich so, dass nicht abgebrochen wird wenn ein befehl nicht funktioniert oder eine Datei nicht gefunden wurde!

JK
Bitte warten ..
Mitglied: Biber
30.09.2005 um 13:28 Uhr
@JK87
Ist es nicht möglich, dass Daten von einer INI-Datei in eine Batchdatei
importiert werden kann (zB Proxy=10.10.0.1, Port=8080, import nur immer der Werte)?

Siehe oben... der Import ist nicht das Problem. Aber Du willst ja vermutlich diesen Proxy dann auch per CMD-Zeile aktivieren? Spätestens dafür mach bitte einen neuen Thread auf

>.... und falls einer nicht funktioniert, dass dieser einfach übersprungen wird?
Meinte ich so, dass nicht abgebrochen wird wenn ein befehl nicht funktioniert oder eine
Datei nicht gefunden wurde!

Wie geschrieben.. im Batch (oder jedem anderen Codefetzen) bestimmst Du, ob bei Fehler abgebrochen wird, ob Du den Benutzer mit Fehlermeldungen belästigst oder selbst eine Fehlerbehandlung/einen Alternativweg wählst.

Einige Progrämmchen, die ich zusammengeschrotet habe, bestehen sicherlich zu 40% aus Fehlerbehandlungen... und diese Größenordnung wird es immer, wenn Du selbst im Programm alle Eventualfälle abdecken willst. Einfacher wird es nur, wenn Du den armen Endbenutzer immer ganz dreist fragst, was das Programm jetzt (bei Fehler) tun soll.
So wie M$ es gerne macht. Dann kannst Du im Zweifelsfall immer den Anwender zusammenfalten, wenn etwas in die Grütze geht ("Du hättest doch da nicht OK drücken dürfen, sondern Abbrechen! Nun ist alles kaputt wegen Dir..")
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Exchange Server
Allgemeine Fragen zum Exchange 2010 (3)

Frage von Leo-le zum Thema Exchange Server ...

Hyper-V
Benötige Hilfe bei Hyper-V-Core 2016 div. Befehle gesucht (4)

Frage von Stefan007 zum Thema Hyper-V ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...