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 Variablen per Loop einlesen - OK. Aber wieder ausgeben ?

Mitglied: knirschke

knirschke (Level 1) - Jetzt verbinden

17.05.2007, aktualisiert 09:39 Uhr, 4405 Aufrufe, 4 Kommentare

Hallo...

gestern stieß ich auf dieses Forum und fand dort Trost und Hilfe - bei diesem Beitrag :
https://www.administrator.de/if_exist_funktioniert_nicht_bei_Verzeichnis ...
nachdem ich zwei Tage mit dem gleichen Problem verrödelt hatte...

Weil ich schon wieder festsitze, hier meine erste Frage an Euch:

Ich lese in einer Schleife ein paar Namen ein - in Variablen, die mit "set A=Name" initialisiert werden und dann per
"set A=%A%x" weiter gebastelt werden :

set A=Name
:LOOP
set /p B=Name :
if "%B%"=="*" goto :ENDLOOP

set %A%=%B%
set LAST=%A%
set A=%A%x

goto :LOOP
:ENDLOOP
pause

"Bis zur Pause" geht das ganz gut, da ist dann z.B. Name : Hänsel
Namex : Gretel
Namexx : Dornröschen etc

So, jetzt möchte ich die eingelesenen Strings in einer zweiten Schleife zur Kontrolle ausgeben - und da komm' ich nicht weiter ; es scheint mir nicht möglich zu sein, einen Zugriff auf "den Inhalt des Inhalts einer Variablen" zu machen - also wie folgt :


set A=Name
:LOOP1
: --------------------
echo %%A%% Leider geht das nicht...
echo %(%A%)% ... geht auch nicht...
:---------------------
if %A%==%LAST% goto :ENDLOOP1
set A=%A%x
goto :LOOP1
:ENDLOOP1

Auch meine Idee

set B=%A%
echo %B%

war nur ein Traum - nach alter DOS-Logik kommt da auch nur "Namex..." als Ausgabe.

Wer weiß da Hilfe ?

Nächtlichen Gruss von Knirschke zu Kalkstein (voller Hoffnung)
Mitglied: bastla
17.05.2007 um 07:47 Uhr
Hallo knirschke und willkommen im Forum!

Um innerhalb eines Variablennamens eine weitere Variable verwenden zu können, muss die "innere" Variable (bei Dir also %A%) zuerst "aufgelöst" (= durch ihren Wert ersetzt) werden.

Damit die Auflösung der "äußeren" Variable (zB %Namexx%) erst danach erfolgt (also "verzögert" wird), muss die "DelayedExpansion" aktiviert werden. Dadurch ändert sich die Kennzeichnung der Variable (nicht "%", sondern "!").

Dein Beispiel sähe dann so aus:
01.
setlocal enabledelayedexpansion 
02.
set A=Name 
03.
:LOOP 
04.
set /p B=Name : 
05.
if "%B%"=="*" goto :ENDLOOP 
06.
 
07.
set %A%=%B% 
08.
set LAST=%A% 
09.
set A=%A%x 
10.
goto :LOOP 
11.
 
12.
:ENDLOOP 
13.
pause 
14.
 
15.
set A=Name 
16.
:LOOP1 
17.
: -------------------- 
18.
echo !%A%! 
19.
:--------------------- 
20.
if %A%==%LAST% goto :ENDLOOP1 
21.
set A=%A%x 
22.
goto :LOOP1 
23.
 
24.
:ENDLOOP1
HTH
bastla
Bitte warten ..
Mitglied: bastla
17.05.2007 um 08:16 Uhr
... als ergänzende Anmerkung:

So ganz überzeugt mich die oben verwendete Strategie allerdings nicht, da Du ja trotzdem nicht wirklich gezielt auf einzelne Werte zugreifen kannst. Je nachdem, was Du mit den eingegebenen Daten weiter vorhast (und welche Menge davon anfällt), würde ich sie vielleicht ganz einfach in einer Variable sammeln (oder in eine temporäre Textdatei schreiben) und dann zB mit einer "for"-Schleife verarbeiten.

Eine mögliche Umsetzung, die auch die Verwendung von Leerzeichen innerhalb der Eingaben erlaubt, könnte so aussehen:
01.
@echo off & setlocal 
02.
:LOOP 
03.
set /p B=Name: 
04.
if "%B%"=="*" goto :ENDLOOP 
05.
 
06.
set A=%A% "%B%" 
07.
goto :LOOP 
08.
 
09.
:ENDLOOP 
10.
pause 
11.
for %%i in (%A%) do echo %%~i
Die Anführungszeichen dienen dazu, durch Leerzeichen getrennte Namensbestandteile zusammen zu halten. Bei der Ausgabe werden die einschließenden Anführungszeichen mit "~" wieder entfernt.

Grüße
bastla
Bitte warten ..
Mitglied: knirschke
17.05.2007 um 09:19 Uhr
Moin goden Dag bastla !

Da hab' ich mir viele Nachtstunden um die Ohren gehau'n und 4 Std. in EndlosSchleifen von EndlosSchleifen geträumt...

Wo, heiliges Hackbrett, kriegt man solche Infos her (das mit den Ausrufszeichen), wenn nicht von Euch? In den "guten alten Zeiten" hab' ich viele batches geschrieben, aber DAVON nie gehört. Vielleicht gibt es das ja auch erst in dem simulierten DOS.

Würde mich sehr freuen, wenn Du mir einen Link verraten könntest, unter dem ich mein (Un)Wissen etwas updaten kann. Wenn geht mit vielen Beispielen. Die MS-Site ist für mich etwas mühsam zu erfassen...

Vielen Dank erstemaal - auch für die zweite Lösung - die ist ganz klar viel schöner.

Knirschke
Bitte warten ..
Mitglied: bastla
17.05.2007, aktualisiert 16.11.2012
Hallo knirschke!

Freut mich, wenn Du wieder angenehmere Nächte haben kannst ...

Zum Thema Links: Am Besten, Du bleibst einfach gleich hier und siehst Dir vor allem Bibers Tutorials und Kommentare an.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
FOR Loop Variablen ( Batch )
gelöst Frage von clragonBatch & Shell2 Kommentare

Hey Leute. Ich schreib grad an einem script rum und hab folgendes Problem: Die Variable eines FOR loop meines ...

Batch & Shell

Powershell intelligent Variablen einlesen

Frage von PinkFLuffyUnicornBatch & Shell5 Kommentare

Hi, ich habe folgendes Problem: Ich hzabe eine Textdatei aus welcher ich gerne zeilenweise variablen auslesen und in einer ...

Batch & Shell

Variable aus VBS in Batch einlesen

gelöst Frage von racer1601Batch & Shell4 Kommentare

Hallo ich habe das Problem das ich die Variable "Ordner" aus einem VBS Script nicht in meine Batch bekomme. ...

Batch & Shell

Variable einlesen (Batch)

gelöst Frage von clragonBatch & Shell3 Kommentare

Liebe Administratoren Ich wollte mir gerade ein paar schmale Werkzeuge für Verschlüsselung und Entschlüsselung mit Batch und der GPG ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 19 StundenWindows 103 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 21 StundenAdministrator.de Feedback16 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 TagHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...