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?

Mitglied: Physikuss

Physikuss (Level 1) - Jetzt verbinden

02.03.2010 um 13:43 Uhr, 5228 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

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 ...

Windows Server

SQL: SQLCMD-Ausgabe als Variable

Frage von berlingerWindows Server2 Kommentare

Hallo Zusammen Ich bin auf der Suche nach einer schlauen Lösung und komme nicht weiter. Ich möchte gerne via ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Ups: Einfaches Nullzeichen hebelte den Anti-Malware-Schutzt in Windows 10 aus

Information von kgborn vor 1 StundeErkennung und -Abwehr

Windows 10 ist das sicherste Windows aller Zeiten, wie Microsoft betont. Insidern ist aber klar, das es da Lücken, ...

Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 3 StundenWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 3 StundenMicrosoft3 Kommentare

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1025 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall15 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)15 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware10 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...