新用户在这里。我一直在寻找我认为是一个相对简单的任务的高低。我想在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()
答案 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