gpt4 book ai didi

arrays - 如何在Batch中定义一个大数组?

转载 作者:行者123 更新时间:2023-12-04 15:41:54 27 4
gpt4 key购买 nike

我想批量定义一个大数组(>400 个键),但是当我执行脚本时,窗口关闭。我使用这个设置:

set FILE_LIST=(filename1.xxx [...] filename450.yyy)

有什么帮助吗?谢谢

最佳答案

Windows 批处理文件每个变量的值限制为 8192 个字符,包括变量名称和等号。如果每个“filename#.xxx”的值有16个字符,则一个变量中最多可以存储8192/16=512个文件名;为此,您必须使用批处理命令。例如:

@echo off
setlocal EnableDelayedExpansion

set "FILE_LIST="
for /L %%i in (1,1,450) do set "FILE_LIST=!FILE_LIST!filename%%i.xxx "
echo FILE_LIST=%FILE_LIST%

请注意,前面的变量是一个列表,而不是数组。要定义数组,请使用以下方法:

@echo off
setlocal EnableDelayedExpansion

for /L %%i in (1,1,450) do set "FILE_ARRAY[%%i]=filename%%i.xxx"
echo FILE_ARRAY:
set FILE_ARRAY

所有变量占用的总空间限制为 64 MB。

有关批处理文件中数组和其他数据结构的详细说明,请参阅:Arrays, linked lists and other data structures in cmd.exe Batch script

编辑:回复评论

下面的批处理文件假设 .txt 文件中的每一行有一个文件名,并且文件名不包含感叹号:

@echo off
setlocal EnableDelayedExpansion

rem Load the .txt file in FILE_ARRAY elements:
set num=0
for /F "delims=" %%a in (fileList.txt) do (
set /A num+=1
set "FILE_ARRAY[!num!]=%%a"
)

rem Process the FILE_ARRAY elements:
for /L %%i in (1,1,%num%) do echo Processing: %%i- "!FILE_ARRAY[%%i]!"

关于arrays - 如何在Batch中定义一个大数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435916/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com