Передача даты из пакета служб SSIS в процедуру пакетного файла «Добавить суффикс даты в имя файла» - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть пакет служб 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. </p>

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

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

1 Ответ

0 голосов
/ 16 сентября 2011

Поскольку 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]  )  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...