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 IPWünsch Dir wasWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Variable aus mehreren Variablen zusammensetzen - in einer For Schleife

Mitglied: Nagus

Nagus (Level 2) - Jetzt verbinden

05.01.2011 um 14:47 Uhr, 7981 Aufrufe, 9 Kommentare

Moin,
ich scheitere gerade beim zusammenbasteln von Variablen. Ist vermutlich total idiotisch - ich komme aber gerade nicht drauf ...

1. Ich habe eine Anzahl Variablen Var10 - Var24 die entweder 0 oder 1 sind.
2. Mit einer For-Schleife möchte ich Var generieren und dann prüfen. Var ist ja immer fest, und nur die Zahl ändert sich. Also dachte ich etwas in der Form %Var%%i%

Das funktioniert nicht ... wie wäre denn richtig oder geht es so überhaupt nicht?

Zweiter Ansatz war

Wenn ich es so mache, wäre ja TmpVar zwar gleich der Variablen VarXX aber ich möchte ja den Inhalt der Variablen VarXX und nicht den Inhalt VarXX

Hilfe ....

Gruß
Nagus der verzweifelte
Mitglied: bastla
05.01.2011 um 15:09 Uhr
Hallo Verzweifelter !

Was Du vermutlich möchtest, ist:
oder ev auch:
Grüße
bastla
Bitte warten ..
Mitglied: Nagus
05.01.2011 um 18:55 Uhr
Jippiiieeee!
Genau so funktioniert es! Deine Zweite Lösung ist sogar noch passender!

Aber jetzt möchte ich es auch noch verstehen:
Dadurch werden erst alle Werte in der For Schleife angezeigt. Warum brauche ich das?

Was passiert durch die ! bei !Var%%i!==1 ??? Offensichtlich kann ich mir die Variablen auch per echo !Variable! anzeigen lassen. Was ist der Unterschied zu %Variable%? Ich kannte bisher nur das ....

Viele Grüße
Nagus der glückliche
Bitte warten ..
Mitglied: mathe172
05.01.2011 um 19:49 Uhr
Hallo Nagus!

Das "@echo off" bedeute0 (auseinandergerissen):
"@":Zeige den Nachfolgenden Befehl nicht an
"echo off" Schalte die Ausgabe aus; So wird nur noch das angezeigt, was du mit "echo" ausgeben willst

Das "&": Verknüpft Befehle (in eine neue Zeile Schreiben ginge auch)

Das "setlocal enabledelayedexpansion ":Schaltet die verzögerte Variablenexpansion ein.
Das bedeutet: Normalerweise wird ein Befehl vom Interpreter(cmd) angeschaut und alle Variablen durch den Wert ersetzt. Dann wird der Befehl ausgeführt.
Das Problem: Eine For-Schleife ist ein Befehl--> Das heisst, alle verwendeten Variablen werden am Anfang durch ihren Inhalt ersetzt und dann die Schleife abgearbeitet. (Ausnahme: Die Laufvariablen (zB: %%A))
Ist die verzögerte Variablenexpansion eingeschaltet, kann man dem Interpreter sagen, dass er die Variablen zB. in jedem Durchgang erneut auswerten soll. Dies geschieht durch die "!" (statt den "%")

-->(Obiges Beispiel):
Der Ausdruck "!Var%%i!" heisst: Schaue in jedem Schleifendurchgang den Wert der Variable an. Also:
1. Durchgang: Var1= ?
2. Durchgang: Var2= ?
3. Durchgang: Var3= ?
...

Hier ein anderes Beispiel:
[edit: Nachtrag:
Das von dir verwendete "%var%%i%" hat noch ein Problem: Der Interpreter sucht nach zwei Variablen: %var% und %i%.
Dies ist auch der Fall wenn man zB. ausserhalb eine Schleife den Inhalt eine Variable mit einer Variable im Namen verwenden will: Etwa "%Variable%Namenszusatz%%"
Der Interpreter würde nach %Variable% und %% suchen (der Teil "Namenszusatz") würde einfach als Zeichenkette angesehen werden
Deshalb kann man in dem Fall auch ausserhalb einer Schleife die "!" verwenden (nur mit "setlocal enabledelayedexpansion")
Beispiel:
]

Ich hoffe es ist verständlich
Mathe172
Bitte warten ..
Mitglied: Nagus
05.01.2011 um 20:30 Uhr
Hi Mathe172,
danke erstmal für die Ausführliche Erklärung!

Das mit dem @echo off ist klar Ein bisschen Ahnung habe ich schon ....

setlocal enabledelayedexpansion war nicht so klar, aber habe ich verstanden.

Das heißt doch: wenn ich die Verzögerung nutze - muss ich ! anstatt % nehmen. Mit diesem Ausdruck %Variable% würde ich also immer den ersten Wert bekommen.

Was passiert bei !Variable! ohne enabledelayedexpansion?

Viele Grüße
Nagus der erleuchtete
Bitte warten ..
Mitglied: Biber
05.01.2011 um 20:44 Uhr
Moin Nagus,


Zitat von Nagus:
Was passiert bei !Variable! ohne enabledelayedexpansion?
Was passiert denn, wenn du einen Busfahrschein in den ec-Kartenleser an der Supermarktkasse schiebst?
Oder wenn du versuchst einen Pudding zu toasten?

Batch ist zwar manchmal etwas kryptisch, aber ein klitzekleines Bisschen hat es doch mit den ansonsten üblichen Gesetzen der Logik zu tun.

Nochmal: "verzögerte Variablenauflösung" funktioniert nur unter zwei Bedingungen
a) es muss von dir angekündigt werden wie ein "Kontra" beim Doppelkopf, nur auf outlandish mit "SetLocal EnableDelayedExpansion".
b) nach der Ankündigung kannst du sowohl Variablen "wie immer" anfassen als %variable% -oder- als !variable! "verzögert"==im letzten Moment ermittelt.

wenn Bedingung a) nicht gegeben ist, dann hast du gar keine Oder-Option bei b), denn du kannst gar keine !variable!'n ansprechen.
Oder beim Doko: wenn du nicht "kontra" angesagt hast, dann zählt nix doppelt.

Grüße
Biber, der geduldige
Bitte warten ..
Mitglied: bastla
05.01.2011 um 20:48 Uhr
@mathe172

Und dann wäre da noch:
Grüße
bastla
Bitte warten ..
Mitglied: jeb-the-batcher
05.01.2011 um 22:36 Uhr
Dank der guten Erklärungen, ist dann auch offensichtlich wieso hier

Natürlich als Ausgabe "Doch zwei" rauskommt.

Grüße
jeb, der bastl-er
Bitte warten ..
Mitglied: Nagus
06.01.2011 um 12:24 Uhr
Okay, also
Zitat von Biber:
> Zitat von Nagus:
> ----
> Was passiert bei !Variable! ohne enabledelayedexpansion?
Was passiert denn, wenn du einen Busfahrschein in den ec-Kartenleser an der Supermarktkasse schiebst?
Oder wenn du versuchst einen Pudding zu toasten?

Weiß ich noch nicht - muss ich mal testen
Jaja - war ne blöde Frage, ich habe es inzwischen auch noch mal getestet ...

Nagus, der reumütige
Bitte warten ..
Mitglied: Nagus
06.01.2011 um 12:40 Uhr
Prima! Mission Accomplished!

Das verstehe ich jetzt nicht mehr ...

Nagus ?????
Bitte warten ..
Ähnliche Inhalte
DSL, VDSL
Kein Upload Mehr
Frage von max.koblerDSL, VDSL21 Kommentare

Hallo, Habe seit tagen Probleme mit dem Upload und da ich eine LWL leitung habe mit 100/15Mbit und bur ...

CPU, RAM, Mainboards

DATEV braucht mehr "RUMMS": höherer Takt oder mehr Cores?

gelöst Frage von LochkartenstanzerCPU, RAM, Mainboards10 Kommentare

Moin Kollegen, Ein Kunde hat mich nach einer Workstation für DATEV gefragt. Da ich DATEV selbst noch nie in ...

Entwicklung

Geany kompiliert nicht mehr

Frage von NortelEntwicklung4 Kommentare

Hallo zusammen, ich habe nun einige Zeit mit geany kompiliert. Heute habe ich kurzzeitig versucht freepascal neu zu installieren, ...

Administrator.de Feedback

Feedabruf nicht mehr möglich?

gelöst Frage von Penny.CilinAdministrator.de Feedback3 Kommentare

Hallo und guten Morgen, ich nutze Mozilla Firefox v68.4.1 ESR. Aktuell funktioniert das runterladen der Feednachrichten nicht mehr. In ...

Neue Wissensbeiträge
Sicherheit
Alexa un Co. TU-Darmstadt entwickelt Anti-Spy Tool
Information von the-buccaneer vor 11 StundenSicherheit3 Kommentare

Moinsen! HR-Info hatte heute ein Feature in dem das "LeakyPick" der TH-Darmstadt vorgestellt wurde. Das Tool existiert bisher nur ...

Linux Tools
Rsync datenvolumen reduzieren mit -fuzzy
Anleitung von NetzwerkDude vor 2 TagenLinux Tools

Moin, aus der Kategorie "Häufig übersehene Parameter": Meistens benutzt kaum jemand den fuzzy Parameter von rsync, und er taucht ...

Sicherheit

Citrix ADC, Gateway u. SD-Wan: Schwachstellen patchen

Information von kgborn vor 5 TagenSicherheit

Keine Ahnung, wie viele Admins von Citrix-Applicances hier unterwegs sind und ob die Versorgung mit Advisories klappt. Aber im ...

Off Topic

Im Tel Raum von Hamburg (040) sind mal wieder viele Indische Microsoft Anrufer unterwegs

Information von TomTomBon vor 6 TagenOff Topic16 Kommentare

Moin Moin, Die sind so schlecht das sogar meine Frau sofort die erkannt hat was die sind. Und Ihr ...

Heiß diskutierte Inhalte
Windows 10
OneDrive: GUI lädt, move nicht
Frage von holliknolliWindows 1028 Kommentare

Hallo liebe alle, befindet sich jemand aus dem Kreise der MS-Developer, speziell Onedrive unter den Teilnehmern hier? Frage: warum ...

Festplatten, SSD, Raid
Backup einer an die FRITZBox angeschlossenen Festplatte
Frage von DJ-KeyFestplatten, SSD, Raid19 Kommentare

Habe eine Frstplatte, die mehrere Partitionen beherbergt. Die Festplatte die an der FRITZ!Box als NAS dient ist schon älter ...

Router & Routing
Fritzbox Feste IP-Adresse Zugang
gelöst Frage von TobiTobiRouter & Routing19 Kommentare

Guten Tag liebes Forum, Ich habe ein Problem wo ich nicht weiterkomme! Situation: Netzwerk: DSL-Modem(daytrec)-OPNSense-Netzwerk Habe aktuell mein Anschluss ...

Exchange Server
Exchange CAL Lizenzen?
gelöst Frage von KleinProfiExchange Server16 Kommentare

Hallo Jungs, wir sind in der Firma 10 Mann, haben aber auf dem Exchange 15 Postfächer bzw. 15 User ...