我有一个批处理文件,它以来自 Java 文件的字符串数组的形式传递命令。这些命令包含如下内容:
String[] commands = {"A",
"B",
"C",
"C:\users\user\Documents",
"C:\users\user\Pictures"}
commands 数组是动态的,因为每次运行 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%]!
。如您所见,我启用了延迟扩展。但是,模拟数组中元素的 list[...] 变量需要 !!。但是,我相信我也需要对“新”使用延迟扩展。在这种情况下我该怎么办?或者也许这不是真正的问题?“旧”和“新”变量正确递增,但该echo !list[%old%]!
行每次都返回相同的值。我希望该行中存在相同的问题,“旧”-它应该有!围绕它但是!已经被用于 list[...] 变量。那么如果你需要在语句中嵌套 !'s 会发生什么?感谢您的帮助!