2017-06-12 7 views
1

Ich habe den folgenden Code:Windows-Batch-Variable in Variable mit Array

setlocal enableDelayedExpansion 
call :Retrieve Test 
goto eof 
:Retrieve <StringVar> 
set /a Count_%1=2 

Daraus ergibt sich (in Befehlsfenster mit Echo auf):

set /a Count_Test=2 
echo !Count_%1! 

Daraus ergibt sich:

set "file_%1[!Count_%1!]=*.txt" 

Dies führt (im Befehlsfenster mit Echo ein):

set "file_Test[!Count_Test!]=*.txt" 

Jedoch sollte es sein:

set "file_Test[2]=*.txt" 
set file_%1[ 

Ergebnisse in:

Umgebungsvariable Datei Test [nicht

definiert
goto eof 
:eof 

Weiß jemand, was ich falsch mache ?! ? kompletter Code unten:

setlocal enableDelayedExpansion 
call :Retrieve Test 
goto eof 
:Retrieve <StringVar> 
set /a Count_%1=2 
echo !Count_%1! 
set "file_%1[!Count_%1!]=*.txt" 
set file_%1[ 
goto eof 
:eof 

Sorry für meine Änderungen, ich bin neu in diesem ...

Meine Frage nach der Linie ist: set "file_%1[!Count_%1!]=*.txt", der Rest der Linien OK und eine Probe meines ursprüngliches Skript.

+0

Meine Frage ist über die Zeile: set "file_% 1 [! Count_% 1!] = *. Txt", der Rest der Zeilen sind in Ordnung und ein Beispiel für mein Original-Skript. –

+0

[Die Windows-Eingabeaufforderung ist * NOT * eine DOS-Eingabeaufforderung!] (Https://scalibq.wordpress.com/2012/05/23/the-windows-command-prompt-is-not-a-dos-prompt/) – aschipfl

+0

Fein ... aber weißt du was ich meine? –

Antwort

0

Versuchen

set file_%1[ 

Statt

set file-%1[ 

(hilft ein wenig, wenn Sie den richtigen Variablennamen verwenden)

+0

Sorry, das war ein Tippfehler ... Es ist nicht diese Zeile, die ein Problem verursacht. –

+0

Bitte Code ausschneiden und einfügen. Retyping führt Tyops ein. – Magoo

+0

Ihre Aussage, dass der Befehl 'echo'ed gesetzt werden soll, ist" file_Test [2] = *. Txt "ist falsch. Die Substitution eines '! Var!' Kann zur Zeit des Parsens nicht gemacht werden. – Magoo

0

es bereits behoben ...

call set "file_%1[!Count_%1!]=*.txt" 

Hat den Trick gemacht ...