在循环中批量填充数组

5

您好,我在批处理中遇到了一个大问题,说起来有点复杂,但我找到了解决方法。问题是我不知道如何在批处理中实现它。如果在C#中,我可以轻松地完成它,因为我是新手。下面是C#代码,请问能否教我如何在批处理中完全像这样做呢?我已经整天在谷歌上搜寻,但没有找到方法。提前感谢!

ArrayList list = new ArrayList();
//let say variable "Filesx" consist of files count in one folder

for(int i = 0; i < Filesx; i++){
   list.Add("file number : " + i);
}

附言:如果批处理中不可能使用ArrayList,则仅使用数组也可以。


你是想要获取一个包含数字0到 Filesx - 1 的数组吗?还是想做些更有用的事情(比如名字列表等)? - Floris
1
你看过这个网址 https://dev59.com/CnVC5IYBdhLWcg3w9GA9 吗?再结合这个网址 https://dev59.com/h2DVa4cB1Zd3GeqPhd5Q,你就可以得到答案了。 - Floris
谢谢回复,但我的目的只是在循环内填充一个数组以进行下一步操作,这在批处理中是否可能? - paiseha
好的,我会尝试查看它,无论如何还是谢谢。 - paiseha
你提供的第二个链接解决了我的问题,非常感谢。原来在批处理中,数组不需要事先指定大小,就像ArrayList一样,太酷了。很遗憾我不能将您标记为答案,因为它是在评论中提供的。 - paiseha
我很高兴你能通过我提供的链接找到答案。这一切都在于知道要搜索哪些术语... - Floris
1个回答

6
@echo off
setlocal EnableDelayedExpansion

rem Populate the array with existent files in folder
set i=0
for %%a in (*.*) do (
   set /A i+=1
   set list[!i!]=%%a
)
set Filesx=%i%

rem Display array elements
for /L %%i in (1,1,%Filesx%) do echo file number %%i: "!list[%%i]!"

请注意,为了方便,批处理数组中的下标应该从1开始,而不是0。

有关批处理文件中数组管理的进一步描述,请参见:在cmd.exe(批处理)脚本中的数组、链表和其他数据结构


1
需要注意的是,每当您需要在批处理中使用数组、链表或其他高阶数据结构时,都应认真重新评估您选择的编程语言。 - Ansgar Wiechers
@AnsgarWiechers:您是否在暗示那些不懂其他语言但需要(或想要学习)这些功能的人必须学习另一种语言而不能在批处理中使用它们?似乎没有人意识到批处理编程语言可以作为有价值的学习工具! - Aacini
1
我建议需要这些功能的人最好投资时间学习一门更新、更多才多艺的编程语言,而不是浪费时间在解决旧的语言如批处理的限制上。你的经验可能会有所不同。 - Ansgar Wiechers
1
@AnsgarWiechers 为什么你会在这里提出那个建议,尝试帮助 @paiseha 的情况下呢?这个人很可能对使用哪种语言没有发言权。如果是这种情况,你的确可能是正确的,但这并没有真正帮助到他。 - Scott
@Scott 猜测 OP 可能会或不会参与其中的猜测也没有帮助。而且这已经过去6年了。 - Ansgar Wiechers
2
@AnsgarWiechers,似乎是你想要开始争论,而不是我。祝你有个好日子。 - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接