我有一個批處理文件,它以Java文件中字符串數組的形式傳遞命令。該命令包含類似以下內容:在批處理文件中循環「數組」來移位元素
String[] commands = {"A",
"B",
"C",
"C:\users\user\Documents",
"C:\users\user\Pictures"}
的命令陣列是動態的,因爲它改變了每一個Java程序運行時。在批處理文件中,我創建變量以獲取前三個元素(在這種情況下爲A,B和C)的值。然後我需要移動目錄字符串來佔用數組的前三個元素。下面是該批次代碼,我到目前爲止有:
@echo off
setlocal enableDelayedExpansion
set /A paramCount=0
for %%x in (%*) do (
set list[!paramCount!]=%%x
set /A paramCount=paramCount+1
)
set argA=%list[0]%
set argB=%list[1]%
set argC=%list[2]%
set /A old=0
set /A new=!old!+3
for /F "tokens=2 delims==" %%a in ('set list[') do (
echo old=!old!
echo new=!new!
set list[!old!]=!list[%new%]!
echo !list[%old%]!
set /A old=!old!+1
set /A new=!new!+1)
我遇到的問題是與線set list[!old!]=!list[%new%]!
。正如你所看到的,我已經延遲啓用。然而,!!的列表變量需要模擬數組中的一個元素。不過,我相信我也需要使用延遲擴展「新」。在這種情況下我該怎麼做?或者這可能不是真正的問題? 「舊」和「新」變量正在遞增,但echo !list[%old%]!
行每次返回相同的值。我期望在這一行中存在同樣的問題,使用「old」 - 它應該包含它,但![...]已經被用於列表變量。那麼如果你需要嵌套!在一個聲明中會發生什麼?感謝您的幫助!
在您的代碼中'%List [!new!]%'總是大於或等於3,並且您生成的列表一直持續到'%List [2]%',因此它不能返回正確的值。你能解釋一下你真的想要做什麼嗎?肯定有一種最簡單的方式去那裏..... – SachaDee
我會盡我所能。我從包含三個初始參數的排序「數組」開始,然後是未知數量的其他參數(目錄)。我需要基本上使用前三個參數(將變量設置爲它們的值),然後將它們從仿真數組中移除並移動所有目錄,以便只有目錄保留在模擬數組中。這是否有意義,還是應該嘗試進一步解釋? – DerStrom8