すべてのディレクトリをリネームするゾ

訳あって、カレントディレクトリにあるサブディレクトリを一気にリネームしたくなった。サブディレクトリが1つや2つならば手作業でやってもいいのだが、100個以上あるものだから気が遠くなる。そこで簡単なVBSCRIPTを書いてみた。実はVBSCRIPTはほとんど初体験だ。

' renall - rename all folder name ' カレントディレクトリの全フォルダを yyyymmddhhmsss_nnnn 形式にリネームする ' ' usage: cscript renall.vbs Function FmtNum(num, col) FmtNum = Right("0000000" & num, col) End Function Sub RenameAllFolders(folderspec) Dim fso, f, f1 Dim src, dst, dt Dim count Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(".") Set sf = f.SubFolders count = 0 dt = Now For Each f1 in sf src = f1.name dst = Year(dt) & FmtNum(Month(dt), 2) & FmtNum(Day(dt), 2) &_ FmtNum(Hour(dt), 2) & FmtNum(Minute(dt), 2) & FmtNum(Second(dt), 2) &_ "_" & Right("0000" & count, 4) count = count + 1 fso.MoveFolder src, dst WScript.Echo src & " -> " & dst Next End Sub RenameAllFolders(".")

使い方は簡単で、目的のディレクトリ内で

cscript renall.vbs

とやれば、そのディレクトリ内のフォルダを YYYYMMDDHHMSSS_NNNN という形式にりねーむしてくれる…はずだった。

途中までは快調だった。しかしいつのまにか同じディレクトリを何度もリネームしていることに気がついた。どうやら f.SubFolders がダイナミックに更新され、リネーム後のディレクトリ名を再読込しているようだ。使えないヤツ。どうしたものか。

投稿者:

azira

何でもやったけれど、みんな中途半端なプログラマくずれの一匹うさぎ。

“すべてのディレクトリをリネームするゾ” への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>