Batch file 将日期从SSIS包传递到“将日期后缀添加到文件名”批处理文件例程

Batch file 将日期从SSIS包传递到“将日期后缀添加到文件名”批处理文件例程,batch-file,ssis-2005,Batch File,Ssis 2005,我有一个SSIS包,它将日期参数作为参数从包变量传递到批处理文件。批处理文件的目的是在预先确定的位置重命名预先确定的文件,例如在文件名中添加日期后缀,其中日期后缀的格式为_yyy_MM 我遇到的问题是,当我在IDE中运行SSIS BIDS 2005包时,下面的批处理文件重命名了该文件,但在当月没有前导零。但是,当我通过测试服务器上的调度程序运行它时,文件被正确重命名,以便月份具有前导零 可能是由于驾驶员的潜在差异 以下是批处理文件的代码: ECHO OFF SET CurrentFolder=%

我有一个SSIS包,它将日期参数作为参数从包变量传递到批处理文件。批处理文件的目的是在预先确定的位置重命名预先确定的文件,例如在文件名中添加日期后缀,其中日期后缀的格式为_yyy_MM

我遇到的问题是,当我在IDE中运行SSIS BIDS 2005包时,下面的批处理文件重命名了该文件,但在当月没有前导零。但是,当我通过测试服务器上的调度程序运行它时,文件被正确重命名,以便月份具有前导零

可能是由于驾驶员的潜在差异

以下是批处理文件的代码:

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%
我真的是一个批处理文件的noob

如果有人能帮忙,我想做的是:

如果作为字符串计算的月份长度小于2,则调整代码,使其固定在前导零上

其次,我希望这个重命名文件的过程更加通用,这样我就可以将文件名完整路径作为一个附加参数传入,并在任何文件上添加后缀


具有更强大批处理能力的人可以提供帮助吗?

由于SSI吸收的文件比批处理文件少一点,另一种选择是让包将日期格式化为月份的前导零:

Right("0"+ (DT_WSTR, 2) MONTH( @[User::ReportingMonth]  ) ,2) + "/" + Right("0"+ (DT_WSTR, 2) DAY( @[User::ReportingMonth]  ) ,2) + "/" + (DT_WSTR, 4) YEAR( @[User::ReportingMonth]  )