简单的 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)
我在使用以下 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)