Проблема с пакетным скриптом Windows

У меня проблема со следующим пакетным скриптом Windows. У меня есть несколько XML-файлов в% indir%, которые я хочу импортировать по одному и отправлять отчет по электронной почте. В основном раздел, начинающийся с "if /I %v_continue% == y", не выполняется должным образом. Я сделал некоторую пошаговую отладку с включенным echo, и он проходит через скрипт до команды%BLAT%, не выполняя ни одного из шагов, а затем начинает выполнение с первого "copy% script_path%.....". Он правильно выполняет import.exe, но затем ничто не присваивается%subj%, и впоследствии команда%BLAT% завершается неудачно. Любой совет?

Спасибо!

@echo off

set environment=%1
set domain=%2

if [%environment%] == [] goto :endofscript

rem - Get the script path
set script_path=%~dp0
rem - Get the script name without the extension
set script_name=%~n0
rem - Get the script name with the extension
rem set script_name=%~nx0
rem - get the script extension
set script_ext=%~x0

rem - Set environment variables
call %script_path%\setenv.cmd

set cnt=0
set filemask=*.xml

for /f %%a in ('dir /b /a-d %indir%\%filemask%') do call :procfile %%a
goto :EOF

:procfile
set impfile=%1
set v_continue=n
set emailyn=y



set trset=%impfile:~0,3%
set /A cnt + = 1
if 1%cnt% lss 100 set cnt=0%cnt%

if %trset% == RCT (
   set "subtxt=Receipt Confirmation"
   set v_continue=y
)

if %trset% == SHP (

   set "subtxt=Shipment Confirmation"
   set v_continue=y

   setlocal EnableDelayedExpansion

   set MOFound=
   for /f "tokens=3 delims= " %%f in ('find /i /c "<RefID>MO-ORD</RefID>" %indir%\%impfile%') do (set MOFound=%%f)

   if !MOFound! GTR 0 (
      copy %indir%\%impfile% %inarchdir%
      move %indir%\%impfile% %S_INDIR%\FX%dttmstamp%%cnt%.xml 2>NUL
      goto :EOF
   )

   endlocal

)

if /I %v_continue% == y (

   copy %script_path%\%script_name%.dat %infile%
   cscript %REPLACEVBS% %infile% "DOMAIN"   "%domain%"   1>NUL 2>&1

   cd /d %rptdir%

   %DLC%\bin\import.exe -b -T d:\tmp -p %pfile%

   rem - Check for errors

   find /i /c "ERROR:" %rptfile% > NUL

   if %ERRORLEVEL% NEQ 0 (
      set "subj=SUCCESS: %subtxt% Import Report (%environment%/%domain%)"
      set emailyn=y
   ) else (
      set "subj=ERROR: %subtxt% Import Report (%environment%/%domain%)"
      set emailyn=y
   )

   move %rptfile% %logdir%\%script_name%_%datestamp%_%cnt%.prn 2>NUL
   move %outfile% %logdir%\%script_name%_%datestamp%_%cnt%.out 2>NUL

   if /I %emailyn% == y (
         echo Report location: %logdir%\%script_name%_%datestamp%_%cnt%.prn > %msgfile%
         %BLAT% %msgfile% -server abc-com.mail.protection.outlook.com -f donotreply@abc.com -s "%subj%" -t %INBEMAIL% -attachi %logdir%\%script_name%_%datestamp%_%cnt%.prn
   )

)

del /f /q %infile%
del /f /q %pfile%
del /f /q %msgfile%

:delfiles

rem - Delete log files that are older than 10 days.
PushD "%logdir%" && (
   forfiles /M %script_name%_*.prn /D -10 /C "CMD /C del /f /q @PATH" 2>NUL
) & PopD

:endofscript

exit /B

0 ответов

Другие вопросы по тегам