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

Auslesen eines Strings aus einer Datei, diesen als Variable setzen und dann mit einer anderen Variable kombinieren - Wo liegt der Fehler?

Frage Entwicklung Batch & Shell

Mitglied: DarkBrummer

DarkBrummer (Level 1) - Jetzt verbinden

10.02.2011 um 16:35 Uhr, 3145 Aufrufe, 6 Kommentare

Hi Zusammen, ich versuche gerade eine Batch zu erstellen die mir das Leben etwas erleichtern soll.
Und nun sitze ich schon viel zu lange davor, habe eigentlich keine Ahnung von Batchgeschichten...

Es handelt sich dabei um folgendes:

REM Erstelle eine Datei namens pinglog.txt
echo PingAlot > pinglog.txt

REM definiere Umgebungsvariable b
SET b=.bla.domäne.bla

REM Schleife, hole dir aus der Datei Hostnames.txt einen Namen (%%a), und pinge die Komibnation aus dem geholten namen und der Umgebungsvariable, dann filtere und schreibs in die pinglog.txt
FOR /F "tokens=1*" %%a IN (Hostnames.txt) DO ping -n 1 %a%%b% | findstr [ >> pinglog.txt

Soweit mein Gedankengang.
Leider lässt cmd die variable %%a immer aus. und verwendet nur die %%b,
Aber nur inerhalb der Schleife, warum?

Vielen Dank!
lg
DarkBrummer
Mitglied: bastla
10.02.2011 um 16:37 Uhr
Hallo DarkBrummer und willkommen im Forum!

Gib doch der Variablen %%a (bzw dem Interpreter) eine Chance und schreibe sie in
ping -n 1 %a%%b%
auch so, wie sie wirklich heißt ...

Grüße
bastla
Bitte warten ..
Mitglied: DarkBrummer
10.02.2011 um 16:55 Uhr
Hi Bastla, erstmal danke für die schnelle Antwort
Habe es auf deinen Rat hin geändert:

echo PingAlot > pinglog.txt
SET b=.bla.domain.bla.bla
FOR /F "tokens=1*" %%a IN (Hostnames.txt) DO ping -n 1 %a%%b% | findstr [ >> pinglog.txt


Aber leider habe ich nach wie vor folgende Ausgabe:

Y:\Mei Zeig\Admin>pingAlot3.bat

Y:\Mei Zeig\Admin>echo PingAlot 1>pinglog.txt

Y:\Mei Zeig\Admin>SET b=.bla.domain.bla.bla

Y:\Mei Zeig\Admin>FOR /F "tokens=1*" %a IN (Hostnames.txt) DO ping -n 1 .bla.domain.bla.bla | findstr [ 1>>pinglog.txt

Y:\Mei Zeig\Admin>ping -n 1 .bla.domain.bla.bla | findstr [ 1>>pinglog.txt

Y:\Mei Zeig\Admin>ping -n 1 .bla.domain.bla.bla | findstr [ 1>>pinglog.txt


Danke trotzdem
lg
DarkBrummer
Bitte warten ..
Mitglied: Biber
10.02.2011 um 17:08 Uhr
Moin DarkBrummer,

willkommen im Forum.
Zitat von DarkBrummer:
Hi Bastla, erstmal danke für die schnelle Antwort
Habe es auf deinen Rat hin geändert:
...
FOR /F "tokens=1*" %%a IN (Hostnames.txt) DO ping -n 1 %a%%b% | findstr [ >> pinglog.txt

Hmmja, bastla hatte noch einen kleinen Zusatz dabei
...so, wie sie wirklich heißt ...
Gemeint war damit vermutlich, dass du zum Ansprechen des Gesamtstrings aus Laufvariable %%a und gesetzter Variable %b%
NICHT schreiben solltest : %a%%b%
SONDERN : %%a%b%

Sieht zwar alles aus wie Merkels Frisur, aber bei genauem Hinschauen gibt es Unterschiede...

Grüße
Biber
Bitte warten ..
Mitglied: DarkBrummer
10.02.2011 um 17:14 Uhr
:D Klasse,
ich hab den halben Tag nach der richtigen Schreibweise gesucht, und sie nicht gefunden.
Bin dann mehrfach über euere Beiträge in Google gestolpert..., aber jetzt! JUHU, es funktioniert. Denke das hat sich gelohnt, da ich jetzt keine 200 Server händisch anpingen muss. Aber es fehlen noch ein paar Kleinigkeiten. Evlt. hört ich nochmal von mir.

Dankeschön! - Spitze!
LG
Dark

PS: Danke für die nette Begrüßung im Board.
Bitte warten ..
Mitglied: 60730
10.02.2011 um 17:54 Uhr
moin und auch von mir ein herzhaftes Willkommen.

  • und ein paar kleiner Tipps am Rande...

"nur" in Schleifen bist du auf "nichtssagende" Variablen wie a oder A (und das sind zwei unterschiedliche) angewiesen.

  • Sinnvoller und deutlich lesbarer wäeren nein - nicht die <code></code> Blöcke - in die Batche gut passen sondern aussagekräftige Variablen.

Am liebsten nicht nur "hübsch" geschrieben, sondern auch in Gänsefüsschen. (Zeile 5)

01.
REM Erstelle eine Datei namens pinglog.txt 
02.
echo PingAlot > pinglog.txt 
03.
 
04.
REM definiere Umgebungsvariable b 
05.
SET "domain=bla.domäne.bla" 
06.
 
07.
REM Schleife, hole dir aus der Datei Hostnames.txt einen Namen (%%a), und pinge die Komibnation aus dem geholten namen und der Umgebungsvariable, dann filtere und schreibs in die pinglog.txt 
08.
FOR /F "tokens=1*" %%a IN (Hostnames.txt) DO ping -n 1 %%a.%domain% | findstr [ >> pinglog.txt
Auch wenn die Unterschiede auf den ersten Blick so groß sein mögen, wie Meister Proper mit Lutscher im Hals und Theo Kojak - es macht einen großen Unterschied

Ping %%a.%domain% - oder Ping %%a.%%b sieht einfach schöner aus, als Ping %%a%%b.
(Und wenn du das gemacht hättest, dann gäbe es auch kein "zufällig" funktionierendes %%b)


Gruß
Bitte warten ..
Mitglied: Skyemugen
10.02.2011 um 18:17 Uhr
Zitat von 60730:
Auch wenn die Unterschiede auf den ersten Blick so groß sein mögen, wie Meister Proper mit Lutscher im Hals und Theo
Kojak - es macht einen großen Unterschied

Aloha T-Mo,

[OT]
irgendwann notier ich mir diese Art von Vergleichen von dir und verlege sie als Buch - made my day ;)
[/OT]

greetz André
Bitte warten ..
Neuester Wissensbeitrag
Microsoft Office

MS Office Excel - Formel wird angezeigt, aber nicht berechneter Wert!

Tipp von holli.zimmi zum Thema Microsoft Office ...

Ähnliche Inhalte
PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
Variable setzen können während timeout (3)

Frage von DontFlameMeITryMyBest zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Hyper-V
gelöst Reiner Hyper- V Server oder lieber Rolle (19)

Frage von Winuser zum Thema Hyper-V ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...

Router & Routing
gelöst IP Kamera für drei unabhängige Netzwerke (14)

Frage von ProfessorZ zum Thema Router & Routing ...

SAN, NAS, DAS
gelöst Synology Version 6.1 Probleme (13)

Frage von Hendrik2586 zum Thema SAN, NAS, DAS ...