2017-09-07 11 views
0

ファイルからフォルダのリストを取得するスクリプトを作成し、90日以上経過したファイルをチェックして削除します。vbs(25,3)Microsoft VBScriptランタイムエラー:無効なプロシージャコールまたは引数

スクリプトは90日以上経過したファイルを削除できました。しかし、私はエラーを次のように続けています。

私が逃したものは何も分かりません。どんな助けもありがとう。

Dim days 
Dim inputFolderList, ObjFolder, Files, objFileAge 

If Not WScript.Arguments.Count = 2 Then 
    Wscript.Echo "Invalid number of arguments. Arg1: Daily or Weekly. Arg2: Remove all files older then this" 
    WScript.Quit(-1) 
End If 

days = WScript.Arguments.Item(1) 

inputFileList = "D:\FileGrep2.txt" 
Set Fso = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = fso.OpenTextFile(inputFileList, 1) 

Do Until objTextFile.AtEndOfStream 
    sFolderName = objTextFile.ReadLine 
    getfoldernames(sFolderName) 
Loop 

Function getfoldernames(sFolderName) 
    Set ObjFolder = fso.GetFolder(sFolderName) 
    Set Files = ObjFolder.Files 

    For Each Check In Files 
     objFileAge = DateDiff("n", Check.DateLastModified, Now) 
     If objFileAge > 90 Then 
      WScript.Echo Now & "the following will be deleted " & Check.Path 
      Check.Delete 
     End If 
    Next 
End Function 
+0

あなたのスクリプトは大丈夫です...あなたのスクリプトで何か他のことが起こっているのですか、これは完全なスクリプトですか? –

+0

'sFolderName'が' getfoldernames(sFolderName) 'を呼び出す前に空白かどうかを確認してください。 – SearchAndResQ

+0

投稿したコードの25行目は' objFileAge = DateDiff( "n"、Check.DateLastModified、Now) 'です。それは本当にエラーを起こしている行ですか? –

答えて

1

はおそらく、あなたがこのエラーを投げSet ObjFolder = fso.GetFolder(sFolderName)ラインを引き起こし、あなたの入力ファイル"D:\FileGrep2.txt"に空の行を持っている:

以下は私のスクリプトです。

+0

ありがとうございました@AutomatedChaos ...私は入力テキストファイルに空の行があることに気付かなかった...私はもうエラーを取得しませんでした。 – mirei

+0

@mirei私は助けることができてうれしい。これが問題の解決策であれば、これを受け入れられた回答としてタグ付けし、オプションでそれをアップビューすることができます。これは人々を幸せにするように見える回答者に仮想インターネットポイントを与える:) – AutomatedChaos

関連する問題