複数条件で文字を置換してファイル名を一気に変更する方法
複数の人間が利用するファイルサーバーの管理をしています。ファイル/フォルダ名は、使い方に何となくルールはあるものの、それぞれ独自の変換で保存してしまうので、サーバー内は半角全角などが混在する状態です。これを手作業でルールにのっとって修正するのは結構困難で、かなりの時間を要します。こんなフォルダがいくつもあるのですから・・・もう・・(×_×)そんなシステム管理者に、御用達のツールを紹介します。 まずはこちら ⇒ 「PSSTPSST(プスプス)」複数のファイル/フォルダを一括リネームするためのソフトです。ワープロソフト感覚でファイルやフォルダ名を変更することができる上、頻繁に利用する文字なら履歴も残るので非常に便利です。簡単な使い方の図説です。非常に便利ですが、置換は1パターンずつしか実行できません。「複数条件で置換」する方法があれば、かなり効率が上がるのですが・・・。例えば、 1)りんご→林檎 2)みかん→蜜柑 3)ぶどう→葡萄のように3つの条件を入力することで、一度に置換する。これができれば、ファイルサーバーのファイル名の平準化が一気に進みます。いくつか方法が考えられますが、イメージ的には「文章添削・校正」が一番近いように思います。なので、MS Word のマクロを使用する方法が適切のようです。 こちらを参照 ⇒「複数の置換を一括で行うマクロ」これを応用して、まず「英数字だけ全角→半角変換」を実行してから置換したい文字列のCSVファイルにしたがって置換を実行するれば、ほぼ思い通りにワンクリックでファイル名を平準化することができました。マクロの構文はこちら・・・---------------------'まず「英数字だけ全角→半角変換」する構文Private Sub myconv(ByVal strPattern As String, ByVal lngCase As Long)Selection.Find.ClearFormattingWith Selection.Find.Text = strPattern.Replacement.Text = "".Forward = True.Wrap = wdFindContinue.MatchFuzzy = False.MatchWildcards = TrueEnd WithDo While Selection.Find.ExecuteSelection.Text = StrConv(Selection.Text, lngCase)Selection.Collapse wdCollapseEndLoopEnd Sub'置換表を元に置換する構文 Sub 置換()Dim strPattern As StringstrPattern = "[" & Chr(&H824F) & "-" & Chr(&H829A) & "]{1,}"myconv strPattern, vbNarrowOpen "(フルパスでファイルを指定)置換表.csv" For Input As #1While Not EOF(1)Line Input #1, as = Split(a, ",")Selection.Find.ClearFormattingSelection.Find.Replacement.ClearFormattingWith Selection.Find.Text = s(0)On Error Resume Next.Replacement.Text = s(1)On Error Resume Next.Forward = True.Wrap = wdFindContinueEnd WithSelection.Find.Execute Replace:=wdReplaceAllWendClose #1End Sub---------------------(使い方)ワード(MS word) の設定で [ファイル]-[オプション] の「セキュリティセンター」を開いて [セキュリティセンターの設定]で 「すべてのマクロを有効にする」にしてからプスプスの作業ウインドウの内容を貼り付けて、ツールバーの [表示]-[マクロ]を開けて「置換」を実行すると、ファイル名が平準化された名前になります。この内容を、プスプスで一括リネームすれば完了。おかげで作業効率がグンと向上しました~!。ご参考に。