我在包含几个文件目录的批处理文件中有一个数组。我想删除数组的前三个元素,并将所有内容移过来(即,第四个元素代替第一个元素,第五个元素代替第二个元素,第六个元素代替第三个元素,依此类推)。这可以在批处理脚本中完成吗?
例:
[directoryA, directoryB, directoryC, directoryD, directoryE, directoryF]
更改为:
[directoryD, directoryE, directoryF]
这是我为“数组”编写的代码:
set paramCount=0
for %%x in (%*) do (
set /A paramCount+=1
set "dirs[!paramCount!]=%%x"
)
我能想到的最好的办法是有两个“数组”,一个用于数据,另一个用于数据当前是否有效。下面的示例代码创建一个dirs
保存任何命令行参数的valid
“数组”和另一个“数组”,然后仅从中打印“有效”数据dirs
。
valid[i]
1
当且仅当输入的数据dirs[i]
有效时才等于。in中的任何其他值valid[i]
将指示dirs[i]
将忽略其中的数据。
@echo off
setlocal enabledelayedexpansion
set paramCount=0
for %%x in (%*) do (
echo %%x
set /A paramCount+=1
REM Add data to dirs array
set "dirs[!paramCount!]=%%x"
REM Add valid flag to valid array
set "valid[!paramCount!]=1"
)
echo Printing...
REM Delete element at index 2
set valid[2]=0
REM Print the modified array
for /L %%a in (1 1 %paramCount%) do (
IF !valid[%%a]!==1 (echo !dirs[%%a]!)
)
示例输出:
$>deletetest.bat 1 2 3 4
1
2
3
4
Printing...
1
3
4
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句