2012-03-27 10 views
0

新しいユーザーがここにあります。私は、私が比較的簡単な仕事だと思うものの高低を調べてきました。 Visual Basic Sc​​ript内でワイルドカード(FileNamexxx.xls)を使用してファイルの名前を変更したいとします。 Visual Studioでこのスクリプトを実行します。Visual Basicスクリプトでワイルドカードファイルの名前を変更します。

ご迷惑をおかけして申し訳ありません。

私はこのフォルダに1つのファイルしか持っていないので、私はループが必要であるとは思わない。 DTSスクリプトタスク: プロジェクト名:DTSスクリプトタスクは、ユーザーコードで例外が発生しました ランタイムエラーST_87aa37cb3ec4469d9eca36223aae33ee 実際のファイル名は「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 

が実行されると、私は次のエラーを受け取るあります呼び出しの対象によって例外がスローされました。

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

これは完全なコードですか? FileSystemはインスタンス化されていません。

+0

はちょうど私の完全なコードの私の – bmcbee

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 
+0

アンドリューの一部を掲載この名前の変更が完了した後、SSISプロセスはこのファイルを別のフォルダに移動します。翌日に新しいファイルが持ち込まれます。 これは、マルチファイル識別子を実装するのに意味があると言われています。ありがとうございました。 – bmcbee

+0

Andrew私はこれを使用して、私が上に投稿したのと全く同じエラーを受け取ります。あなたの助けが大変ありがとうございます。 – bmcbee

+0

ああ、実際のエラーメッセージがあなたの投稿から見えないように見えます。どこかにエラーメッセージがあるはずです。私はあなたのプログラムを実行しているアカウントに、.xlsファイルを持つディレクトリへの読み書きアクセス権を持っていますか? –

関連する問題