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

Frage Entwicklung Batch & Shell

GELÖST

Kann aus Bausteinen eine bereits vorhandene Variable abgefragt werden?

Mitglied: burningstep

burningstep (Level 1) - Jetzt verbinden

05.10.2014, aktualisiert 14:17 Uhr, 954 Aufrufe, 2 Kommentare

Hallihallo

Als Nicht-Entwickler durfte ich von dieser Seite bereits sehr viel von eurem KnowHow profitieren; an dieser Stelle ein herzliches Dankeschön.

Aktuell bemühe ich mich um die Frage, ob aus vorhandenen Bausteinen/Werten eine bereits definierte Variable abgefragt werden kann. Bisher kriege ich es nicht hin, kann sein das es auch gar nicht funktioniert.

Zur Veranschaulichung nachfolgender Aufbau, in welcher zuerst die Variablen Ist1, Ist2 und Ist3 definiert werden, diese dann je nach Verlauf des Programms beim Binding abgefragt werden sollen.

Der Ausdruck %Ist%Number%% soll zusammen gebaut entweder Ist1, Ist2 oder Ist3 ergeben und beim echo sollte dann entsprechend one, two und three ausgegeben werden, das will mir aber partout nicht gelingen. Ich krieg das nicht richtig zusammen gebaut hin.
01.
@echo off 
02.
 
03.
set Ist1=one 
04.
set Ist2=two 
05.
set Ist3=three 
06.
 
07.
set List=1 2 3 
08.
 
09.
for %%a in (%List%) do ( 
10.
	set Number=%%a 
11.
	call :Binding 
12.
13.
 
14.
pause >nul 
15.
exit 
16.
 
17.
:Binding 
18.
echo %Ist%Number%% 
19.
exit /b
Gefühlt habe ich das in hunderte Varianten versucht, scheitere jedoch kläglich.
Gibt es eine Möglichkeit, das Gewünschte zu erreichen?

Liebe Grüsse aus der Schweiz
burningstep
Mitglied: Friemler
LÖSUNG 05.10.2014, aktualisiert um 14:17 Uhr
Hallo burningstep,

das sollte so gehen:
01.
@echo off & setlocal 
02.
 
03.
set Ist1=one 
04.
set Ist2=two 
05.
set Ist3=three 
06.
 
07.
set List=1 2 3 
08.
 
09.
for %%a in (%List%) do ( 
10.
  set "Number=%%a" 
11.
  call :Binding 
12.
13.
 
14.
pause > NUL 
15.
exit /b 
16.
 
17.
 
18.
:Binding 
19.
  call echo %%Ist%Number%%% 
20.
exit /b
Die Variable %Number% ist aber nicht unbedingt notwendig, man kann den Wert auch als Argument an das Unterprogramm Binding übergeben und das Beispiel folgendermaßen schreiben:
01.
@echo off & setlocal 
02.
 
03.
set Ist1=one 
04.
set Ist2=two 
05.
set Ist3=three 
06.
 
07.
set List=1 2 3 
08.
 
09.
for %%a in (%List%) do ( 
10.
  call :Binding "%%a" 
11.
12.
 
13.
pause > NUL 
14.
exit /b 
15.
 
16.
 
17.
:Binding 
18.
  call echo %%Ist%~1%% 
19.
exit /b
Das entscheidende bei beiden Varianten ist, dass man einen CALL-Befehl vor das ECHO schreibt und die Prozentzeichen verdoppelt, die im Unterprogramm Binding den dynamisch erzeugten Variablennamen umschließen. Dadurch wird der Batchscript-Interpreter dazu gezwungen, die Zeile zweimal zu parsen/auszuwerten.

1. Auswertung
Die Variable %Number% bzw. %1 (die Tilde ~ in %~1 entfernt umgebende Anführungszeichen) wird durch ihren Wert ersetzt und die umschließenden doppelten %-Zeichen werden auf jeweils ein Zeichen reduziert. => Beim ersten Schleifendurchlauf ergibt sich folgende Befehlszeile:
call echo %Ist1%
2. Auswertung
Weil die Befehlszeile den CALL-Befehl enthält, wird sie erneut ausgewertet und dabei festgestellt, dass die Variable %Ist1% durch ihren Wert ersetzt werden muss. Danach wird der CALL-Befehl ausgeführt. Erstes Argument ist das auszuführende Programm bzw. der auszuführende interne Befehl, hier ECHO. Weitere Argumente, hier der Wert von %Ist1%, werden dem auszuführenden Programm bzw. dem auszuführenden internen Befehl als Argumente übergeben. => Es ergibt sich die Befehlszeile
echo one
Gruß
Friemler
Bitte warten ..
Mitglied: burningstep
05.10.2014, aktualisiert um 14:28 Uhr
Hallo Friemler

Vielen lieben Dank für deine Antwort und super Erklärung.
Der call vor dem echo ist für mich neu. Aber ich glaub, ich habe verstanden

Grüsse
burningstep
Bitte warten ..
Ähnliche Inhalte
Windows Server
Migration von in Zieldomäne bereits vorhandenen Benutzern
gelöst Frage von Liquidsnake85Windows Server4 Kommentare

Hi Leute, folgende Situation: Ich versuche grade 2 Domänen in eine neue Domäne zu migrieren. Soweit passt auch alles. ...

Suche Projektpartner
Projektpartner für Projektidee gesucht, kein 0815 - Unternehmen ist bereits vorhanden
Frage von 116280Suche Projektpartner

Hallo Forengemeinde! Ich suche einen Projektpartner für ein Internetportal, welches eine Datenbank umfasst und auf Dauer Einnahmen erzielen kann. ...

Linux Tools
Multisystem: Fehler: Live-CD ist bereits vorhanden!
Frage von 13Stift37Linux Tools3 Kommentare

Guten Morgen Admins, lasst euch den Kaffee schmecken ;) Ich habe ein kleines "Problem". Undzwar benutze ich das Linux ...

VB for Applications
VBA: Überprüfung ob Daten in Excel bereits vorhanden sind
gelöst Frage von crinaXVB for Applications7 Kommentare

Guten Morgen, zur Situation: Es existiert eine MS Access Datenbank. Zusätzlich gibt es noch eine Excel Tabelle welche teilweise ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...