2014-04-07 149 views
0

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

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

+0

Email.bat这里:http://stackoverflow.com/questions/21432006/script-to-start-service-if-not-running-then-email-results/21435658#21435658 – foxidrive

+0

你的任务似乎要根据结果检查文件中的字符串并将某些内容回显到文件中。如果您在问题中描述任务,或者打开一个新问题,则可以以更简单的方式完成此操作。 – foxidrive

+0

@foxidrive感谢email.bat!我会看看它。是的,我的任务是循环访问日志文件。在通过每一行时,如果检测到关键字,应该将整行信息通过电子邮件发送给用户(我不知道如何保存字符串并将所有存储的字符串通过电子邮件发送给用户)。所以我有这个想法,也许我可以在阵列上做到这一点。除了array = /我完全不能想到其他方式。天哪〜 –

回答

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+1,set var[!i!]=abc。这个答案更详细地解释了该方法:https://stackoverflow.com/a/10167990/1059776

+0

嗨保罗,我明白你的意思了。不幸的是,文本文件包含需要通过电子邮件发送给用户的唯一关键词。这就是为什么我想存储到数组中。但是,您声明Windows批处理文件不支持复杂的数据类型。行!我会看看帖子!感谢您的解释! –

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" 
) 
+0

嗨foxy,其实你的答案我用来创建sucess.txt已经。不管怎样,谢谢。 –

相关问题