我有一个SSIS包,它将一个日期参数从一个Package变量传递给一个Batch文件作为参数。批处理文件的目的是在预定位置重命名预定文件,以便将日期后缀添加到文件名中,其中日期后缀的格式为“_YYYY_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%
我真的是批处理文件的菜鸟。
如果有人可以提供帮助,我想做的就是:
如果以字符串形式计算的月份长度为<
,则调整代码以使其在前导零上固定。 2。
其次,我希望这个重命名文件过程更通用,这样我就可以将文件名完整路径作为附加参数传递,并在任何文件上添加后缀。
具有更多BATCH能力的人可以提供帮助吗?
答案 0 :(得分:0)
由于SSIS比批处理文件少一点,另一种选择是让包在10个月内使用前导零格式化日期:
Right("0"+ (DT_WSTR, 2) MONTH( @[User::ReportingMonth] ) ,2) + "/" + Right("0"+ (DT_WSTR, 2) DAY( @[User::ReportingMonth] ) ,2) + "/" + (DT_WSTR, 4) YEAR( @[User::ReportingMonth] )