简单的 VB 脚本有问题

Having issues with simple VB script

我在使用以下 VB 脚本在我的 SSIS 包中创建新目录时遇到问题 运行。它应该创建以下新路径 D:\customers\documents\orders171205.

Public Sub Main()
    'set dir path
    Dts.Variables("var_DirPath").Value = 
        "D:\customers\documents\orders\" + Date.Today.Year.ToString + 
        Date.Today.Month.ToString + Date.Today.Day.ToString
    Dts.TaskResult = ScriptResults.Success
End Sub

脚本任务编辑器的ReadWriteVariables配置为User:var_DirPath。变量的值为“D:\customers\documents\orders\”

文件任务配置为

UseDirector/Exists = True
Operation = Create directory
IsSourcePathAvailable = True
Source variable = User:var_DirPath

调试时在包中解析,但不知道为什么这个简单的脚本不起作用。

感谢任何帮助。

我不确定为什么您看不到任何日期子文件夹,但该代码还有其他问题。例如,1 月 11 日和 11 月 1 日会为同一年生成相同的文件夹名称。试试这个:

Dts.Variables("var_DirPath").Value = String.Format("D:\customers\documents\orders\{0:yyyyMMdd}", Date.Now)

这比串联要好,而且格式可确保所有日期的文件夹名称都是唯一的。

一些建议

您必须确保变量名称输入正确,因为名称区分大小写。您也可以使用 Date.Now.ToString("yyyyMMdd") 而不是连接日期部分。

Public Sub Main()
    'set dir path
    Dts.Variables("var_DirPath").Value = 
    "D:\customers\documents\orders\" & Date.Now.ToString("yyyyMMdd")
    Dts.TaskResult = ScriptResults.Success
End Sub

还要确保将文件系统任务 Delay Validation 属性 设置为 True

更简单的解决方案 - 使用表达式

顺便说一句,你可以使用表达式来实现,只需转到变量列表,单击变量 var_DirPath,按 F4 显示属性选项卡,设置 Evaluate as expression 属性 到 True,单击 Expression 属性 并使用以下表达式:

 "D:\customers\documents\orders\" + (DT_STR, 4, 1252) DATEPART("yyyy" , GETDATE()) + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("MM" , GETDATE()), 2) + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)