arrays - 从批处理文件中的数组中删除元素

标签 arrays batch-file

我在批处理文件中有一个数组,其中包含多个文件目录。我想删除数组的前三个元素并让所有元素都转移(即第四个元素代替第一个元素,第五个元素代替第二个元素,第六个元素代替第三个元素,等等)。这是可以在批处理脚本中完成的事情吗?

示例:

[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] 中的数据已验证。 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

关于arrays - 从批处理文件中的数组中删除元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19990614/

相关文章:

ios - 具有多重验证的对象数组过滤器

linux - Putty 在 Linux 终端中执行文本图 block

windows - 查找没有文件的目录 Windows

ruby-on-rails - Ruby 嵌套数组迭代复杂度

Windows cmd 删除每个 bin 和 obj 文件夹

java - 如何通过VBscript或批处理更改Java高级设置?

.net - 在 Process.Start 参数中传递引号

ios - 测试对象是否在对象数组中

C 编程测验 for 循环内的平均数组

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP