Переименовать подстановочный файл в скрипте Visual Basic - PullRequest
0 голосов
/ 27 марта 2012

Новый пользователь здесь.Я искал все выше и ниже то, что, на мой взгляд, является относительно простой задачей.Я хочу переименовать файл с подстановочным знаком (например, FileNamexxx.xls) в скрипте Visual Basic.Я буду запускать этот скрипт в Visual Studio.

Любая помощь очень ценится.

У меня будет только 1 файл в этой папке, поэтому я не считаю, что цикл необходим.Фактическое имя файла: «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 голосов
/ 27 марта 2012

Вы также можете проверить, что в каталоге действительно есть только один файл .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
0 голосов
/ 27 марта 2012

Это ваш полный код?FileSystem не было создано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...