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, 3136 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
CPU, RAM, Mainboards

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

(2)

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

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...