Top-Themen

Aktuelle Themen (A bis Z)

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

Zeilen einer Ausgabe mit for in nummerierte Variablen schreiben?

Frage Entwicklung Batch & Shell

Mitglied: Physikuss

Physikuss (Level 1) - Jetzt verbinden

02.03.2010 um 13:43 Uhr, 5219 Aufrufe, 11 Kommentare

Hallo


ich habe jetzt schon viel versucht, aber ich finde meinen Fehler nicht.
Die Aufgabenstellung ist eigentlich recht simpel:

Ich möchte aus einer Bildschirmausgabe bestimmte Werte auslesen und in Variablen speichern.

Hier nun mein Ansatz:

01.
@echo off 
02.
setlocal EnableDelayedExpansion 
03.
set /a count=0 
04.
for /f "tokens=2 delims=<>" %%i in ('curl "http://fritz.box/cgi-bin/webcm?getpage=../html/login_sid.xml"') do ( 
05.
    set /a count+=1 
06.
    set dummy!count! = %%i 
07.
)

Die Bildschirmausgabe besteht in meinem Falle wie gewünscht aus 3 Zeilen, welche in den Variablen dummy1 bis dummy3 gespeichert werden sollen. Leider klappt es offenbar so nicht. Die Variablen werden nicht richtig gesetzt.
Mitglied: Snowman25
02.03.2010 um 14:56 Uhr

Hallo

ich finde meinen Fehler nicht.
und
@echo off
Passt einfach nicht zusammen.
Lass dir einfach mal alles ausgeben, was relevant ist. Dann findest du deinen Fehler sicherlich.

Gruß
Snow
Bitte warten ..
Mitglied: Physikuss
02.03.2010 um 14:59 Uhr
Danke erstmal für den Hinweis.

Der Code, den ich gepostet habe, ist natürlich nicht mein Code, den ich zum Debuggen verwende. Ich wollte nicht mit unnötigen echo-Aufrufen vom Wesentlichen ablenken. Viel eher interessiert mich auch eine allgemeine Lösung für diese Problemstellung:
D.h. man erhält von einem Befehl eine Ausgabe und möchte verschiedene Werte daraus in Variablen speichern. Am liebsten wäre es mir eben mit einer for-in-do Variante, da es dann recht elegant gehen müsste (wenn es geht )
Bitte warten ..
Mitglied: Snowman25
02.03.2010 um 15:06 Uhr
Und wir sollen uns hinter unsere Glaskugeln setzen und raten, was deine Fritzbox zurückgibt und was letztendlich in %i übrig bleibt?
Überprüfe mal, ob deine Dummy-Variablen überhaupt zugewiesen werden.
Bitte warten ..
Mitglied: LotPings
02.03.2010 um 15:34 Uhr
Hallo Physikuss,

wo liegt denn jetzt das Problem?
Bis auf die überflüssigen/falschen Leerzeichen vor und nach der Zuweisung in Zeile 6 funktioniert dein Code doch?
Ich würde aber wegen gleicher Zifferanzahl statt auf 0 auf 1000 initialisieren.
Gib mal als Zeile 8 ein:
Set dummy
Gruß
LotPings
Bitte warten ..
Mitglied: Physikuss
02.03.2010 um 15:48 Uhr
Also in %%i steht das richtige drin.
Die Übergabe in einer bestimmten Zeile in eine einzelne Variabel funktioniert auch.
Der Counter zählt wie gewünscht von 1 bis 3.
Daher gehe ich davon aus, dass der Fehler in dem setzen der Variablen liegt (werden nicht gesetzt).

Hier nochmal eine Variante zum Debuggen
01.
@echo on 
02.
setlocal EnableDelayedExpansion 
03.
set /a count=0 
04.
for /f "tokens=2 delims=<>" %%i in ('curl "http://fritz.box/cgi-bin/webcm?getpage=../html/login_sid.xml"') do ( 
05.
set /a count=!count!+1 
06.
set dummy!count! = %%i 
07.
echo Count !count! 
08.
09.
echo Der Count ist !count! 
10.
echo dummy1 !dummy1! 
11.
setlocal DisableDelayedExpansion
Bitte warten ..
Mitglied: LotPings
02.03.2010 um 16:12 Uhr
Hallo Physikuss,

wer lesen kann, ist klar im Vorteil.

in Zeile 6 wird das Leerzeichen vor dem = Teil des Variablennamens und das Leerzeichen dahinter Teil des Inhalts.

Gruß
LotPings
Bitte warten ..
Mitglied: Physikuss
02.03.2010 um 16:40 Uhr
Hallo,

hmm... also da brat mir doch einen nen Storch.
Dann scheint mit den echo-Aufrufen nach EnableDelayedExpansion etwas anders zu sein als ich mir das vorstelle. Da kommt bei echo !dummy1! einfach nur: Echo ist ausgeschaltet(OFF) bzw. Echo ist eingeschaltet (ON). Da muss ich ein bißchen nachsitzen.
Jedenfalls funktioniert es so doch.
Danke Snowman und LotPings für die Geduld.
Bitte warten ..
Mitglied: LotPings
02.03.2010 um 17:31 Uhr
Zitat von Physikuss:
Dann scheint mit den echo-Aufrufen nach EnableDelayedExpansion etwas anders zu sein als ich mir das vorstelle.
Ja ich fürchte du musst deine Vorstellung anpassen

Da kommt bei echo > !dummy1! einfach nur:
Echo ist ausgeschaltet(OFF) bzw. Echo ist eingeschaltet (ON).
In deiner Batch wird ja auch eine andere Variable gesetzt.

"!dummy!" ist ungleich "!dummy !"
Wenn eine Variable nicht gesetzt ist, expandiert der Befehl ja auch nur zu echo ohne etwas dahinter.
Um die Ausgabe des Echo-Status zu vermeiden kannst du direkt hinter dem Echo auch statt eines Leerzeichens folgende Zeichen setzen:
Echo.Punkt 
Echo:Doppelpunkt 
Echo/Slash 
Echo\Backslash 
Echo;Semikolon 
Echo,Komma
Probier es einfach mal aus.

Gruß
LotPings
Bitte warten ..
Mitglied: Physikuss
02.03.2010 um 19:32 Uhr
Hallo,
vielen Dank für die Aufklärung. Leider komme ich nicht ganz bei der Bemerkung
"!dummy!" ist ungleich "!dummy !"
nicht ganz mit. Ich hab die Leerzeichen entfernt und es ändert sich nichts am Verhalten.
Wie müsste ich denn in der Schleife sowas wie
01.
echo %dummy!count!%
umsetzten?
Bitte warten ..
Mitglied: Biber
02.03.2010 um 20:34 Uhr
Moin Physikuss,

du bist im Moment auf der ganz falschen Fährte... es ist alles viel banaler... hat nichts mit enableter expansion oder Sonnenflecken oder so zu tun.

Was du tust in deiner ursprünglichen Zuweisung innerhalb der FOR-Anweisung entspräche am CMD-Prompt:
>for /L %i in (1,1,3)  do @set Dummy%i = %i 
## wenn du dann nach Variablen namens "Du<whatever>" fragst: 
 
>set du 
Dummy1 = 1 
Dummy2 = 2 
Dummy3 = 3 
## jetzt noch mal mit ohne Leerzeichen rund ums "=" 
 
>for /L %i in (1,1,3)  do @set Dummy%i=%i 
 
>set du 
Dummy1=1 
Dummy1 = 1 
Dummy2=2 
Dummy2 = 2 
Dummy3=3 
Dummy3 = 3
[ Das führende ">" nicht mit eingeben, ist mein Prompt]

--> dann siehst du, dass du die Werte [Leerzeichen]1, [Leerzeichen]2 und [Leerzeichen]3 an die Variablennamen "Dummy1[Leerzeichen]", "Dummy2[Leerzeichen]", "Dummy3[Leerzeichen]" zugewiesen hast

Und eine Variable "Dummy1[Leerzeichen]" ist eine ganz andere Variable als "Dummy1"(ohne Leerzeichen).
Aber was geECHOed werden soll und NICHT da ist ist bei "Echo !dummy1!-(ohne Leerzeichen)"... hmmm?

Das versuchte dir das Lordchen vorhin schon zu erklären.

Du warst nur auf die fehlende Komplexität des Fehlers nicht vorbereitet.

Grüße
Biber
Bitte warten ..
Mitglied: Physikuss
03.03.2010 um 12:36 Uhr
Ok, soweit alles klar. Das mit dem Leerzeichen hatte ich schon begriffen.
Aber außderdem war ich mir nicht so ganz sicher, wie das
01.
echo %dummy!count!%
innerhalb der for-Schleife bzw. nach EnabledDelayedExpansion auszusehen hat. Ich werde nochmal ein bisschen testen.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Wieso ist die Catch Ausgabe ohne ausgabe der Variable?
gelöst Frage von pixel0815Batch & Shell10 Kommentare

Hallo zusammen, weshalb wird nicht die Variable $_.Hostname mit dem betreffenden nicht vorhandenen Record angezeigt? Ich erhalte immer Kein ...

Batch & Shell
Zeilen aus Datei auf einem Netzwerkspeicher einlesen und NUMMERIERT auflisten in BATCH
gelöst Frage von Fabian-HaasBatch & Shell10 Kommentare

Hallo, Ich möchte mithilfe einer Batchdatei verschiedene Netzwerkfreigaben eines Benutzers nummeriert auflisten. Diese sind in einer Datei auf dem ...

Batch & Shell
CMD ausgabe in log schreiben
gelöst Frage von medikopterBatch & Shell9 Kommentare

Hallo, ich suche nach einer möglichkeit eine CMD ausgabe in ein log zu schreiben. Ich habe hier schon mehrere ...

Linux Tools
Mit echo eine Ausgabe einer Variable ändern.
gelöst Frage von rsadmchefLinux Tools2 Kommentare

Hallo Team, ich habe am Linux Terminal folgendes Konstrukt vor: num="11000" echo $num 11000 Es soll aber 1 1 ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 4 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 4 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 12 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server14 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...