2016-06-23 4 views
2

Mein Code sieht wie folgt aus so weit:Können Sie eine Variable erstellen, die eine Variable in Batch-Dateien enthält?

:start 
set a=0 
echo Enter Number: 
set /p b%a%= 
set /a a=%a%+1 
if %a% lss 5 goto start 
set x=1 
:show 
echo Number 1: %b%a%% 
if %x% lss 5 goto show 

Ist das möglich? Es ist wie ein Array, aber technisch ist es nicht.

+0

Vielleicht mit einem hässlichen Hack: Sie könnten Batch-Dateien zur Laufzeit mit echo generieren, die dann die eigentlichen set/p-Anweisungen enthalten würden. –

+0

Ich bin mir nicht sicher, was Sie erreichen möchten. Ich nehme an, Sie könnten sich für diesen Beitrag interessieren: [Batch: TXT-Zeilen in Array parsen] (http://stackoverflow.com/a/30404094) ... – aschipfl

Antwort

2

Ja, dies ist möglich, wie der folgende Batchcode zeigt.

start ist ein Windows-Standardbefehl. Es ist möglich, aber nicht ratsam, es als Etikett zu verwenden.

Der Eingabeaufforderungstext kann auf Befehl set /P angegeben werden.
Weitere Details finden Sie unter How to set environment variables with spaces?.

Alles nach set /A wird als arithmetischer Ausdruck interpretiert und += wird ebenfalls unterstützt.

Die Verwendung der verzögerten Umgebungsvariablenerweiterung ist erforderlich, um den Wert einer Umgebungsvariablen mit einer anderen Umgebungsvariablen im Namen zu referenzieren.

BTW: Der Befehl set b gibt alle Umgebungsvariablen im Format name=value aus, beginnend mit dem Zeichen b. Bei einem eindeutigeren Namen ist dies oft eine bessere Methode zum Ausgeben von Variablen als die oben verwendete Schleife.

@echo off 
setlocal EnableDelayedExpansion 
set a=1 
:LoopEnterNumbers 
set /P "MyNumber#%a%=Enter Number: " 
set /A a+=1 
if %a% lss 6 goto LoopEnterNumbers 
for /F "tokens=2,3 delims=#=" %%I in ('set MyNumber#') do echo Number %%I%: %%J 
endlocal 

für die verwendeten Befehle verstehen und wie sie arbeiten, öffnen Sie eine Eingabeaufforderung, führen Sie dort die folgenden Befehle ein und vollständig alle Hilfeseiten für jeden Befehl angezeigt sehr sorgfältig lesen.

  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • set /?
  • setlocal /?
+0

danke sir! hat sehr geholfen! –