在Visual Basic脚本中重命名通配符文件

时间:2012-03-27 13:37:29

标签: vb.net visual-studio-2010

新用户在这里。我一直在寻找我认为是一个相对简单的任务的高低。我想在Visual Basic脚本中使用通配符(即FileNamexxx.xls)重命名文件。我将在Visual Studio中运行此脚本。

非常感谢任何帮助。

我在这个文件夹中只有1个文件,所以我不相信循环是必要的。 实际FileName是“CellModelHistory1251234.xls”

Imports System
Imports System.IO
Imports System.Text
Imports System.Windows.Forms
Imports Microsoft.SqlServer.Dts.Runtime

<Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute()> _
<System.CLSCompliantAttribute(False)> _
Partial Public Class ScriptMain
    Inherits Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase

    Public Sub Main()
        Dim OldName As String
        Dim NewName As String
        OldName = Dir("X:\Database Build\SQL Downloads\Temp\CellModel*.xls")
        NewName = Dir("X:\Database Build\SQL Downloads\Temp\CellModelHistory.xls")
        FileSystem.Rename(OldName, NewName)
    End Sub

End Class

执行时,我收到以下错误: DTS脚本任务:运行时错误 DTS脚本任务在用户代码中遇到异常: 项目名称:ST_87aa37cb3ec4469d9eca36223aae33ee 调用目标引发了异常。

at System.RuntimeMethodHandle._InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, SignatureStruct& sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.RuntimeMethodHandle.InvokeMethodFast(IRuntimeMethodInfo method, Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeType typeOwner)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()

2 个答案:

答案 0 :(得分:0)

这是您的完整代码吗? FileSystem尚未实例化。

答案 1 :(得分:0)

您还可以检查目录中是否只有一个.xls文件,您可以使用System.IO中的方法执行所有操作:

Dim srcDir As String = "X:\Database Build\SQL Downloads\Temp"
Dim files = IO.Directory.GetFiles(srcDir, "*.xls")
If files.Count = 1 Then
    Dim destFile = IO.Path.Combine(srcDir, "CellModelHistory.xls")
    IO.File.Move(files(0), destFile)
Else
    Throw New Exception("No .xls or more than one .xls file in " & srcDir)
End If