批次:将文件中的多行分配到变量时出现问题

时间:2019-07-01 08:01:27

标签: batch-file for-loop variables increment assign

我有一个批处理文件,需要从txt文件(email_config.txt)中读取行,该文件包含电子邮件设置,然后在下一行中使用该设置发送带有附件列表的电子邮件。

在for循环中,我有一个用于变量名称的计数器(例如EC1 =电子邮件地址,EC2 =电子邮件用户名,EC3 =电子邮件密码,EC4 =服务器)。计数器工作正常,但是我无法设置该变量。

我找到了将每行分配给一个变量的可行解决方案,并且可行,但是此后我在代码中进行了更改,但现在没有更改。

@echo off
set cnt=0

for %%f in (C:\Reports\A*.csv) do (
    set /a cnt += 1
    set RA="%%f"
)

for %%f in (C:\Reports\B*.csv) do (
    set /a cnt += 1
    set RB="%%f"
)

for %%f in (C:\LReports\C*.csv) do (
    set /a cnt += 1
    set RC="%%f"
)

for %%f in (C:\Reports\D*.csv) do (
    set /a cnt += 1
    set RD="%%f"
)

for %%f in (C:\Reports\E*.csv) do (
    set /a cnt += 1
    set RE="%%f"
)

for %%f in (C:\Reports\F*.csv) do (
    set /a cnt += 1
    set RF="%%f"
)

if NOT %cnt% == 0 (
    copy C:\Reports\*.CSV C:\Reports\Backup\*.csv
    echo ... Emailing %cnt% reports

    setlocal EnableDelayedExpansion

    set N=0

    for /f "tokens=2 delims==" %%x in (C:\Reports\Task\email_config.txt) do (
        set /a N+=1
        set "EC!N!=%%x"
        echo !N! %%x
    )
    C:\Reports\SendEmail\sendEmail.exe -f %EC1% -t me@myemail.co.za -s %EC4% -xu %EC2% -xp %EC3% -u "Reports" -m "Attached are the available reports" -a %RA% %RB% %RC% %RD% %RE% %RF%

    del /f C:\Reports\*.csv
)
if %cnt% == 0 (
    echo No reports to email 
)

echo Emailing reports complete
pause
exit

我的脚本正在正确读取email_config.txt,但是没有将其分配给变量。

我还尝试在循环中添加一个if并分配给给定变量,但这既不起作用,例如

if !N! == 1 ( set "EC1=%%x" )

我不知道我打错了什么,但会非常感谢您的帮助或完全不同的解决方案。

0 个答案:

没有答案