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

komma separierte textdatei per for-next schleife auslesen

Frage Entwicklung Batch & Shell

Mitglied: dbernsee

dbernsee (Level 1) - Jetzt verbinden

09.07.2008, aktualisiert 16.07.2008, 7409 Aufrufe, 4 Kommentare

Hallo!

Ich habe eine server.txt datei mit folgendem Inhalt: server1,server2,server3...usw diese würde ich gern auslesen ! (...um der frage vorwegzu greifen JA die datei muss genauso aufgebaut sein!)

mir ist klar das wenn die Datei wie folgt aussehen würde alles palletti wäre:

server1<-CRLF
server2
server3
usw.

zum testen habe ich folgendes probiert...was natürlich auch wunderbar funktioniert...

FOR /F "tokens=1-3 delims=," %a IN (c:\batch\server.txt) DO echo %a %b %c

...das ist aber nicht das was ich möchte...die for schleife sollte meine text datei so auslesen das ich als wert %%a jeden server nacheinander ansprechen kann !

mein nächster gedanke war ..evtl. kann ich mit einem tool (zb. sed oder gsar) die kommas durch zeilenumbrüche erstzen lassen !?

...aber mit den zeilenumbrüchen in einer batch ist das ja soone sache !!! habe im intenet nichts gefunden was da wirklich geht!!!

zb. so :

FOR /F "tokens=1" %a IN ('gsar -f, -r?? server.txt') DO echo %a

aber evtl. hat ja jemand von euch noch eine ganz andere idee !?

mfg
D.Bernsee
Mitglied: Biber
09.07.2008 um 20:50 Uhr
Moin dbernsee,

willkommen im Forum.

Wenn Du die Werte partout in eine Ein-Server-pro-Zeile-Liste schreiben möchtest, dann kannst Du es so machen:
01.
for /f "delims=, tokens=1-3" %a in (server.txt) do @((echo %a) &(echo %b) &@(echo %c))
...vom CMD-Prompt aus. Und das Ganze ggf. in eine neue Datei (mit ">"9 oder eine vorhandene (mit ">>") umleiten.

Andererseits: Mach es doch einfach mit einer zeilenweisen Abarbeitung je 3 Server nacheinander (wenn die halt so in der Datei stehen),

Batch:
01.
@echo off & setlocal 
02.
for /f "delims=, tokens=1-3" %%a in (server.txt) do ( 
03.
     call :machwatmit %%a 
04.
     call :machwatmit %%b 
05.
     call :machwatmit %%c 
06.
07.
goto :eof 
08.
 
09.
:machwatmit param1 ist der Servername 
10.
echo jetzt wird Server %1 bearbeitet... 
11.
echo bla... 
12.
goto :eof
Grüße
Biber
P.S. Hier im Forum ### es vielleicht nicht, aber es funktioniert.
Bitte warten ..
Mitglied: dbernsee
15.07.2008 um 15:17 Uhr
Hallo Biber,

danke für die schnelle Antwort...ich war leider nicht im Lande um sofort zu reagieren! Tja eigentlich hatte ich ja bereits so eine ähnliche Lösung
...denn das hier "FOR /F "tokens=1-3 delims=," %a IN (c:\batch\server.txt) DO echo %a %b %c" funktioniert ja wunderbar !!! Ist aber wie gesagt nicht das was ich möchte ...die server.txt enthält nämlich nicht nur 3 maschinen sondern 30+ und mit der oben genannten Methode habe ich ab 29 bzw. 26 (ohne umlaute) ein Problem! Außerdem wäre die Schleife dann elendslang und unübersichtlich! Ich benutze die Serverliste noch in einer anderen batch bzw. mit einem tool welches leider die bekannte Schreibweise (server1,server2...) voraussetzt...sonst hätte ich die liste schon längst händisch' umformatiert!!! Das Format der Liste ist mir letztendlich wurscht ...den echo in meiner schleife habe ich nur als beispiel eingefügt... im original steht dort ein tool namens uptime (zeigt mir die server uptime an!!!)

meine 1te batch...
IST Stand (f u n z t):
FOR %%A IN (server1,server2,server3,...) DO uptime %%A>>c:\batch\server_uptime.log

SOLL Stand (f u n z t nicht):
FOR /F "tokens=???" %%A IN (server.txt) DO uptime %%A>>c:\batch\server_uptime.log


und meine 2te batch schaut so aus...

for /f "tokens=3 delims=: " %%a in ('fping -H %wdir%\server.txt -n1 -l^|find "Reply"') do (
for /f "tokens=2" %%b in ('fping %%a -a -n1^|find "Pinging"') do (
if not exist \\%%a\admin$ echo Can't access Admin Share on %%b !!!>>%wdir%\admin_share.log
)
)

den 2ten schleifen durchgang benötige ich für die (rück)übersetzung von ip auf hostname !

ich möchte nur noch eine server liste pflegen ...deshalb die umstellung der 1ten batch !!! und am liebsten würde ich die server liste abfragen ohne ein weiteres output file zu erzeugen !!!

mfg
db
Bitte warten ..
Mitglied: bastla
15.07.2008 um 18:11 Uhr
Hallo dbernsee!

Batch 1 sollte eigentlich so gehen:
01.
for /f "delims=" %%i in (server.txt) do for %%A in (%%i) do uptime %%A>>c:\batch\server_uptime.log
Grüße
bastla
Bitte warten ..
Mitglied: dbernsee
16.07.2008 um 08:02 Uhr
Moin Moin!

Krass... immer wenn ich gerade denke ich kenn' mich ganz gut in NT-Batch aus ...kommt sowas !!!

Supi 1000 Dank an Superbrain "bastla" !!!

...wenn Du mir jetzt noch die Schleife erklärst bin ich auch schon zufrieden !

...nein warte ich versuch's selbst mal...
...du gibst ja bei der ersten schleife keinen trenner und nix an ...und wir arbeiten dort mit der variable %%i (d.h. %%i stellt in dem moment den kompletten Inhalt der server.txt dar ...richtig?) ...dann wird eine 2te schleife dran gehängt und....ahh mir dämmerts!!!! Coool ....echt nicht schlecht...!

...also falls ich's noch nicht erwähnt hatte ihr jung's von administrator.de habt's echt drauf !!!

gruß
db

p.s.: wenn die for schleife ohne /f auch befehle ausführen könnte hätte man's ja theoretisch auch über nen type auslesen lassen können !!! so z.b. FOR %A IN ('type server.txt') DO uptime %A ....

geht aber eben nicht weil dafür wie gesagt der parameter /f gesetzt sein muss !!!
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Google Android
Textdatei auf SD Karte auslesen funktioniert nicht (Oneplus One) (4)

Frage von lordzwieback zum Thema Google Android ...

Batch & Shell
gelöst Seltsames Verhalten bei Errorlevel abfrage in FOR DO Schleife (1)

Frage von Kalma73 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling (3)

Frage von yperiu zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Erkennung und -Abwehr
Virenschutz - Meinungen (29)

Frage von honeybee zum Thema Erkennung und -Abwehr ...

TK-Netze & Geräte
Telefonanlage gesucht (23)

Frage von Xaero1982 zum Thema TK-Netze & Geräte ...

Windows 10
gelöst Welches OS für Firmengeräte? (20)

Frage von MarkusVH zum Thema Windows 10 ...

Netzwerke
Abisolierwerkzeug (18)

Frage von SarekHL zum Thema Netzwerke ...