WinFuture-Forum.de: Batch Ausgabe einer Variable - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Batch Ausgabe einer Variable


#1 Mitglied ist offline   neuling321 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 11. Juli 17
  • Reputation: 0

geschrieben 11. Juli 2017 - 17:38

Hallo
kann mir einer sagen warum be der zweiten for schleife die Variable %%a ausgegeben wird und bei dem echo %%a davor und danach nicht?

Danke
cls
@echo off
setlocal EnableDelayedExpansion
set zaehler=0
set Laufwerksbuchstabe =
for /f "skip=1 tokens=1,2,3 delims==" %%a in ('"wmic logicaldisk get deviceid, volumename, description"') do (

set /a zaehler^=!zaehler!+1 
set Var!zaehler!^=%%a
)


echo %%a <-- hier klappt sie nicht

for /L %%a in (1,1,%zaehler%) do (if not "!Var%%a!"=="" echo %%a = !Var%%a!) <--- hier klappt die Ausgabe mit dem echo

echo %%a <-- hier klappt sie nicht


0

Anzeige



#2 _d4rkn3ss4ev3r_

  • Gruppe: Gäste

geschrieben 13. Juli 2017 - 18:18

Willkommen im Forum!

Ein echo %%bla funktioniert nur in der Schleife () selbst, nicht mehr danach.
0

#3 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.902
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 13. Juli 2017 - 19:23

Nur als nett gemeinter Hinweis: mit PowerShell spart man sich solche abstrusen Konstrukte gänzlich.

Hier gibt es ein Get-WmiObject cmdlet, welches mit dem Parameter -Class Win32_LogicalDisk die richtige WMI-Klasse auswählt und einfach in eine Schleife reingestopft werden kann, zB so:
Get-WmiObject -Class Win32_LogicalDisk |
 % {
      $_.DeviceID;
      $_.VolumeName;
      $_.Description;
   }



Oder natürlich gleich weiterverarbeiten da, wo es hin soll.


Außerdem läßt sich der Gültigkeitbereich einer Variable per Definition an der richtigen Stelle festlegen.

$a im Schleifenkörper? Gilt nur da.
$a vorm Schleifenkörper definiert? Gilt ab Definitionszeitpunkt.
$a vor UND im Schleifenkörper definiert? Hat außen den einen und innen den anderen Wert (sollte man aber vermeiden wegen Undurchsichtigkeit).

Dieser Beitrag wurde von RalphS bearbeitet: 13. Juli 2017 - 19:27

"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0