2017-06-12 58 views
1

我有以下代碼:視窗批次變量與陣列

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

這導致(在命令窗口與回波上):

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

這導致:

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

此結果(在帶有回顯的命令窗口中):

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

但是,它應該是:

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

結果:

環境變量文件測試[未定義

goto eof 
:eof 

有誰知道我在做什麼錯? ?下面 完整代碼:

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 

對不起,我的編輯,我是新來這個...

我的問題是關於行:set "file_%1[!Count_%1!]=*.txt",該行的其餘部分是OK和樣品我原始腳本。

+0

我的問題是關於行:設置「file_%1 [!Count_%1!] = *。txt」,其餘的行是確定的,我的原始腳本的示例。 –

+0

[Windows命令提示符不是* DOS提示符!](https://scalibq.wordpress.com/2012/05/23/the-windows-command-prompt-is-not-a-dos-prompt/ ) – aschipfl

+0

好...但你知道我的意思嗎? –

回答

0

嘗試

set file_%1[ 

而不是

set file-%1[ 

(幫助一點點,如果你使用正確的變量名)

+0

對不起,這是一個錯字...不是那條線給出了一個問題。 –

+0

請剪下並粘貼代碼。 Retyping引入了特洛伊。 – Magoo

+0

你聲稱他命令'echo'ed應設置爲「file_Test [2] = * .txt」不正確。無法在分析時替換'!var!'。 – Magoo

0

修正它已經...

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

訣竅...