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, 5266 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
Windows Server

Freigabe führt nicht zur Schreib-Berechtigung

gelöst Frage von ElmaCxWindows Server11 Kommentare

Hallo miteinander, ich bin seit 2 Tagen an einer Berechtigungs Problematik zu Gange, bei welcher ich die Lösung nicht ...

Server

Freenas schlechte Schreib Performance bei NFS

Frage von janosch12Server17 Kommentare

Hallo, ich habe momentan das Problem das die Performance bei NFS zu wünschen über lässt Schreiben max 100 Mbit/s ...

Debian

Schreib-Berechtigung für PHP-Anwendung unter Debian

gelöst Frage von itebobDebian6 Kommentare

Hallo, ich möchte mit so einer Datei schreiben.php: eine neue Datei erstellen. Das Beispiel oben funktioniert auf dem Webspace ...

SAN, NAS, DAS

1000 Schreib IOPs zu viel für SQLer ?

gelöst Frage von Ex0r2k16SAN, NAS, DAS10 Kommentare

Hallo, ich fahre hier einen virtuellen Standard 48GB RAM MS SQL Server auf nem Server 2012R2. Unser neues ERP ...

Neue Wissensbeiträge
Windows 7
Updategängelung auf Windows 10, die zweite
Information von Penny.Cilin vor 3 TagenWindows 71 Kommentar

Hallo, da Windows 7 im kommenden Jahr nicht mehr supportet wird, werden Nutzer von Window 7 home premium wieder ...

Internet
EU-Urheberrechtsreform: Zusammenfassung
Information von Frank vor 5 TagenInternet1 Kommentar

Auf golem.de gibt es eine Analyse von Friedhelm Greis, der das Thema EU-Urheberrechtsreform gut und strukturiert zusammenfasst. Zwar haben ...

Microsoft Office

Office365 Schwachstellen bei Sicherheit und Datenschutz

Information von Penny.Cilin vor 6 TagenMicrosoft Office8 Kommentare

Auf Heise+ gibt es einen Artikel bzgl. Office365 Schwachstellen. Das ist noch ein Grund mehr seine Daten nicht in ...

Sicherheit
Schwachstellen in VPN Clients
Tipp von transocean vor 8 TagenSicherheit2 Kommentare

Moin, es gibt Sicherheitslücken bei VPN Clients namhafter Hersteller, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Installation
Windows10 Home Neuinstallation - Raketentechnik
Frage von spacyfreakWindows Installation15 Kommentare

"Kannst du den Rechner von der Tante von WindowsXP auf Windows10 Home upgraden" haben sie gefragt? "Sicher, was kann ...

Utilities
Teamviewer 9.x "out of date" ??
gelöst Frage von keine-ahnungUtilities13 Kommentare

Moin at all, mein topaktueller teamviewer (alles 9.x - releases) verweigert seit heute die Arbeit und bemeckert: "the remote ...

Windows 10
Windows 10 verwendet FritzBox per IPv6 als DNS-Server an Stelle des per DHCP vergebenen DNS-Servers
Frage von Datax87Windows 1010 Kommentare

Hallo, ich habe ein kleines Problem mit der Namensauflösung (DNS) unter Windows 10. Mir ist heute aufgefallen, dass ich ...

Peripheriegeräte
PS2 Y-Kabel für Maus+Tastatur an PS2 Combo-Anschluss ASUS Prime X370-A
gelöst Frage von Windows10GegnerPeripheriegeräte10 Kommentare

Hallo, ich bin am Überlegen das o.g. Motherboard anzuschaffen. Da ich aber noch PS/2 für Maus+Tastatur benötige (bei optischen ...