2

私はVBScriptにアマチュアです(そしてそれが機能する方法に非常に魅了されています;))。タスクを実行するためのスクリプトを生成した特定のレポートを毎日作成する必要があります。問題は、ファイルの特定の名前に対してそのスクリプトを生成したことです。これらのレポートには、毎日、日付といくつかの追加パラメーターが名前に追加されています。したがって、スクリプトで指定された名前に従ってファイルの名前を変更するという毎日の10分間の作業を保存するために、vbscriptが必要です。

たとえばD:/reports/、ファイルAMR KilobyteData_23022013_4399_223.xlsを持っている場合は、名前を単にに変更しAMR KilobyteData.xlsます。それでおしまい !:)

問題について私を助けてください:)

4

2 に答える 2

2

まず、次のようなスクリプトを使用して、フォルダ内のすべてのファイルを繰り返し処理します。

Dim fso, folder, file
Dim folderName, searchFileName, renameFileTo

' Parameters
folderName     = "D:\reports\"
searchFileName = "AMR KilobyteData"
renameFileTo   = "AMR KilobyteData.xls"

' Create filesystem object and the folder object
' how the FSO works: http://msdn.microsoft.com/en-us/library/2z9ffy99(v=vs.84).aspx
Set fso = CreateObject("Scripting.FileSystemObject")  
Set folder = fso.GetFolder(folderName)  

' Loop over all files in the folder until the searchFileName is found
For each file In folder.Files    
    ' See if the file starts with the name we search
    ' how instr works: http://www.w3schools.com/vbscript/func_instr.asp
    If instr(file.name, searchFileName) = 1 Then
        file.name = renameFileTo
        ' Exit the loop, we only want to rename one file
        Exit For
    End If
Next

正しく機能するはずです(ただし、テストはしていません)。私があなたの好奇心を刺激したことを願っています。あなたはこのコードがどのように機能するかについてのメカニズムを調べてください。そのため、ドキュメントを見つけることができるリンクを配置しました。

于 2013-02-26T10:25:42.180 に答える
2

削除する情報は、常にファイル名の最初の下線の後にありますか?もしそうなら、あなたはこのようなことをすることができます:

Set fso = CreateObject("Scripting.FileSystemObject")

For Each f In fso.GetFolder("D:\reports").Files
  pos = InStr(f.Name, "_")
  If pos > 0 Then
    newName = Left(f.Name, pos-1) & "." & fso.GetExtensionName(f.Name)
    f.Move fso.BuildPath(f.ParentFolder, newName)
  End If
Next
于 2013-02-26T10:29:42.537 に答える