将字符串存储到数组中

时间:2014-04-07 07:30:40

标签: arrays windows batch-file cmd

我在数组中存储多个字符串的目的是因为我编写了一个批处理脚本来读取文本文件。如果在文本文件中检测到指定的单词,则会将字符串存储到数组中。经过多个文本文件(它将是数组中的多个字符串)后,我想回显出数组中的所有字符串并通过电子邮件发送给指定的人。经过许多帖子后,我看到的只是set 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

预期产出:

在for循环之后,数组应该有No folderNo files

仅供参考,这是一个监控脚本,用于扫描多个文本文件。所以我需要它(数组)来收集多个字符串并回显出EMAIL给用户。

P.S。关于如何通过电子邮件发送给用户分享的任何帖子=)? 如果有任何问题请问我!

编辑(附加):告诉你们我的任务

我的任务是遍历日志文件。在浏览每一行时,如果检测到关键字,它应该将整行信息通过电子邮件发送给用户(我不知道如何保存字符串并将所有存储的字符串通过电子邮件发送给用户,每次检测到关键字时都不可能,它将发送一封电子邮件。然后我的用户会生我的气......)所以我有想法也许我可以在阵列上做到这一点。除了array = /。

之外,我完全不能想到其他方式

感谢您查看,评论和回答。请向我解释!谢谢!

2 个答案:

答案 0 :(得分:1)

正如本问题中所讨论的那样Arrays, linked lists and other data structures in cmd.exe (batch) script Windows批处理文件不支持像数组这样的复杂数据类型。但是,您可以自由使用类似于var[0]等数组访问器的变量名。

在您的情况下,为什么不按照每个案例和所有案例的输出设置var[0]var[1]var[2]?为了获得更大的灵活性,您可以引入计数器变量并将其用作set /A i=i+1set var[!i!]=abc。这个答案更详细地解释了这个方法:https://stackoverflow.com/a/10167990/1059776

答案 1 :(得分:1)

这会将包含EmptyFilesNoneFolder的行放入文本文件中。

@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"
)