Передача даты из пакета служб SSIS в процедуру пакетного файла "Добавить суффикс даты в имя файла"

У меня есть пакет служб SSIS, который передает параметр даты из переменной Package в пакетный файл в качестве параметра. Назначение пакетного файла - переименовать предварительно определенный файл в заранее определенном месте, например суффикс даты добавляется к имени файла, где суффикс даты имеет формат "_YYYY_MM".

У меня проблема в том, что при запуске пакета SSIS BIDS 2005 в среде IDE следующий пакетный файл переименовывает файл без начального нуля в месяце. однако, когда я запускаю его через наш планировщик на нашем тестовом сервере, файл правильно переименовывается, так что месяц имеет начальный ноль.

Возможно, это связано с разницей потенциалов в драйверах?

Вот код для пакетного файла:

ECHO OFF
SET CurrentFolder=%~dp0
SET ThisFileName=%~n0

REM The following line populates shared path variables used below
CALL %CurrentFolder%\Membob_SetPaths.cmd

SET LogFile=%LogFolder%\%ThisFileName%.log
ECHO %date% %time%  - *** BOJ %CurrentFolder%%ThisFileName%.cmd *** >> %LogFile%

SET ReportingDate=%1 
ECHO Logging to: %LogFile%
ECHO ReportingDate=%ReportingDate% >> %LogFile%

REM Rename the file from MEMBOB.csv to MEMBOB_YYYY_MM.csv, using the passed ReportingDate 
REM But before we rename, delete any file that might already have that target name.

@For /F "tokens=1,2,3 delims=/ " %%A in ("%ReportingDate%") do @( 
Set Month=%%A
Set Day=%%B
Set Year=%%C
)
REM if %Month% LSS 10 Set Month=0%Month%
SET NewFileName=MEMBOB_%Year%_%Month%.csv

if exist %ExportFolder%\%NewFileName% del %ExportFolder%\%NewFileName%

REM Rename the file as described above
ECHO Rename %ExportFolder%\Membob.csv to %NewFileName% >> %LogFile%
rename %ExportFolder%\Membob.csv %NewFileName% 

ECHO %date% %time%  - *** EOJ %CurrentFolder%%ThisFileName%.cmd *** >> %LogFile%

Я действительно нуб с командными файлами.

Что я хотел бы сделать, это, если кто-то может помочь:

Отрегулируйте код так, чтобы он соответствовал начальному нулю, если длина месяца, когда он оценивается как строка, < 2.

Во-вторых, я хотел бы, чтобы процедура переименования файлов была более общей, чтобы я мог передать полный путь к имени файла в качестве дополнительного параметра и добавить суффикс в ЛЮБОЙ файл.

Может ли кто-нибудь с большим количеством мастерства BATCH помочь?

1 ответ

Решение

Поскольку SSIS отстой чуть меньше, чем командные файлы, другой вариант - заставить пакет отформатировать дату с начальным нулем в месяце:

Right("0"+ (DT_WSTR, 2) MONTH( @[User::ReportingMonth]  ) ,2) + "/" + Right("0"+ (DT_WSTR, 2) DAY( @[User::ReportingMonth]  ) ,2) + "/" + (DT_WSTR, 4) YEAR( @[User::ReportingMonth]  )  
Другие вопросы по тегам