Пакет: проблема назначения нескольких строк из файла в переменные - PullRequest
0 голосов
/ 01 июля 2019

У меня есть пакетный файл, в котором мне нужно прочитать строки из текстового файла (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" )

Я не знаю, набрал ли я что-то неправильно, но очень признателен за помощь или совсем другое решение.

...