ファイル名変換スクリプト
ちょこっと仕事で作業しているときにかったるくなったので
ファイル名置換を一気にしてくれるツールを作成してみた。
というより、ファイル名変更が必要ないようにした方がいいのかも
しれないけど、そうすると色々と面倒ごとがあるのでツールの作成を選びました。
といっても手作業が完全排除できないところが悲しい。
ツールについてはjsというのも考えたけど、諸般の事情でVBSに
したった。ちなみにinitPathのところをネットワークパスにすると
ネットワークの共有フォルダもフォルダ選択できたんでびっくり
しょせんへっぽこなのでネットの切り貼りです。
いまだに再帰処理がうまくかけませぬ。
コレぐらいさくっと作れればいいけどなぁ。結局テスト込みで
3時間かかってるよトホホ
ファイル名置換を一気にしてくれるツールを作成してみた。
というより、ファイル名変更が必要ないようにした方がいいのかも
しれないけど、そうすると色々と面倒ごとがあるのでツールの作成を選びました。
といっても手作業が完全排除できないところが悲しい。
ツールについてはjsというのも考えたけど、諸般の事情でVBSに
したった。ちなみにinitPathのところをネットワークパスにすると
ネットワークの共有フォルダもフォルダ選択できたんでびっくり
しょせんへっぽこなのでネットの切り貼りです。
いまだに再帰処理がうまくかけませぬ。
コレぐらいさくっと作れればいいけどなぁ。結局テスト込みで
3時間かかってるよトホホ
Option Explicit Option Explicit Dim objShell Dim wsh Dim initPath 'フォルダ指定 initPath = "C:" Dim targetFolder Set objShell = WScript.CreateObject("Shell.Application") If Err.Number = 0 Then Set objFolder = objShell.BrowseForFolder(0, "対象フォルダの選択", 16, initPath) If Not objFolder Is Nothing Then targetFolder = objFolder.Items.Item.Path else WScript.Quit End If Else WScript.Echo "エラー:" & Err.Description End If Dim objFileSys, objFolder, objFile Set objFileSys = WScript.CreateObject("Scripting.FileSystemObject") Set objFolder = objFileSys.GetFolder(targetFolder) Dim targetStr, replaceStr targetStr = InputBox("置換対象文字を入力してください。", "置換対象") replaceStr = InputBox("置換後の文字を入力してください。", "置換文字列") Dim r r = 0 r = ShowSubFolders(objFolder, targetStr, replaceStr) WScript.Echo "変換処理終了 処理件数:" & r & "件" ' ファイル名置換用処理 Function ShowSubFolders(ByVal Folder, ByVal targetStr, ByVal replaceStr) Dim i Dim File, Subfolder For Each File In Folder.Files If InStr(1, File.Name, targetStr) Then File.Name = Replace(File.Name, targetStr, replaceStr) i = i + 1 With Err Select Case .Number Case 5, 52 WScript.Echo "ファイル名に使えない文字が指定されたので中断します。" Exit For Case 58 WScript.Echo objFile.Name & " は既に存在するためファイル名を変更できません。" .Clear Case 0 'エラーが発生しなかった場合は何もしない Case Else WScript.Echo .Description & .Number .Clear End Select End With End If Next '再帰処理でサブフォルダも変換 Dim r,s For Each Subfolder In Folder.SubFolders r = ShowSubFolders(Subfolder, targetStr, replaceStr) s = s + r Next ShowSubFolders = i + s End Function
コメント