Arrays 将字符串存储到数组中

Arrays 将字符串存储到数组中,arrays,windows,batch-file,cmd,Arrays,Windows,Batch File,Cmd,我在数组中存储多个字符串的目的是因为我编写了一个批处理脚本来读取文本文件。如果在文本文件中检测到指定的单词,它会将字符串存储到数组中。在浏览了多个文本文件(数组中有多个字符串)之后,我想回显数组中的所有字符串,并通过电子邮件发送给指定的人。在浏览了很多帖子之后,我看到的只是设置myarray[0]=abc或者数组已经手动声明了 这是我的密码: @echo off setlocal EnableDelayedExpansion ( for %%x in ( C:\Users\31015

我在数组中存储多个字符串的目的是因为我编写了一个批处理脚本来读取文本文件。如果在文本文件中检测到指定的单词,它会将字符串存储到数组中。在浏览了多个文本文件(数组中有多个字符串)之后,我想回显数组中的所有字符串,并通过电子邮件发送给指定的人。在浏览了很多帖子之后,我看到的只是
设置myarray[0]=abc
或者数组已经手动声明了

这是我的密码:

@echo off
setlocal EnableDelayedExpansion
(
  for %%x in (
    C:\Users\310152922\Desktop\Mohit_Task\AutomatedScript\COB\sucess.txt
  ) do for /f "usebackq delims=" %%a in ("%%~fx") do (
    set "str=%%a"
    set "part1=!str:~0,10!"
    set "part2=!str:~11,8!"
    set "part3=!str:~20,4!"
-------------------------------------------------------------------
    **I wanted to set an array here (Do not want manually set the string) **

    **If the "NoneFolder" word detected, store the string into array**
    if "!part1!" == "NoneFolder" (
    echo No Folder **<< Wanted to store this**
    )
    if "!part1!" == "Downloaded" (
    echo Downloaded 
    )
    ** If the "EmptyFiles" word detected, store string into array **
    if "!part1!" == "EmptyFiles" (
    echo No files **<< Wanted to store this**
    )
    ** Echo the array here **
------------------------------------------------------------------
  )
)>"C:\Users\310152922\Desktop\Mohit_Task\AutomatedScript\COB\email.txt"
pause
@echo关闭
setlocal EnableDelayedExpansion
(
对于%%x英寸(
C:\Users\310152922\Desktop\Mohit\u Task\AutomatedScript\COB\suces.txt
)为/f“usebackq delims=“%%a in(“%%~fx”)执行(
设置“str=%%a”
设置“part1=!str:~0,10!”
设置“part2=!str:~11,8!”
设置“part3=!str:~20,4!”
-------------------------------------------------------------------
**我想在这里设置数组(不想手动设置字符串)**
**如果检测到“NoneFolder”字,请将字符串存储到数组中**
如果“!part1!”==“非文件夹”(

echo No Folder**如本问题所述,Windows批处理文件不支持数组等复杂数据类型。但是,您可以自由使用类似数组访问器的变量名,如
var[0]


在您的情况下,为什么不简单地为每种情况和所有情况的输出设置
var[0]
var[1]
var[2]
?为了更灵活,您可以引入一个计数器变量,并像
set/a i=i+1
set var[!i!]=abc
。此答案更详细地解释了方法:。

这将把包含
清空文件
非文件夹
的行放入文本文件中

@echo off
del "C:\Users\310152922\Desktop\Mohit_Task\AutomatedScript\COB\email.txt" 2>nul

for /f "usebackq delims=" %%a in ("C:\Users\310152922\Desktop\Mohit_Task\AutomatedScript\COB\sucess.txt") do (
   findstr "EmptyFiles NoneFolder" "%%a" >>"C:\Users\310152922\Desktop\Mohit_Task\AutomatedScript\COB\email.txt"
)

嗨,Paul,我明白你的意思了。不幸的是,文本文件包含需要通过电子邮件发送给用户的唯一关键字。这就是我希望存储到数组中的原因。但是,你声明windows批处理文件不支持复杂的数据类型。没问题!我将浏览帖子!谢谢你的解释!email.bat此处:你的任务似乎是检查f如果您在问题中描述了任务,或者打开了一个新问题,则可以用一种更简单的方式来完成。@foxidrive谢谢email.bat!我会看一看。是的,我的任务是循环浏览日志文件。在浏览每一行时,如果检测到关键字,它应该是e将整行信息发送给用户(我不知道如何保存字符串并将所有存储的字符串发送给用户)。因此我有一个想法,也许我可以在数组中完成。除了数组=/。天哪~嗨,福克斯,实际上你的答案我已经创建了suces.txt。无论如何,谢谢。