- ベストアンサー
バッチファイルでフォルダ名をファイル名に置き換える方法
- バッチファイルを使用して、複数のフォルダに格納されているファイルの名前をフォルダ名にリネームする方法を教えてください。
- 指定したフォルダ内のファイルを、それぞれのフォルダ名に基づいてリネームするバッチファイルの作成方法を教えてください。
- バッチファイルを使って、特定のフォルダ内にあるファイルをフォルダ名に基づいてリネームする方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ざっと書いてみました 例外処理やエラー処理など一切省いていますので 想定外のファイル名などついている場合は、動かないかも 「rename.vbs」という名前で存して、マウスでダブルクリックしてみてください 'ここから myFolder="C:\リネーム\" set fs=CreateObject("Scripting.FileSystemObject") set objFolder=fs.GetFolder(myFolder) Set objRE = CreateObject("VBScript.RegExp") For Each sf in objFolder.SubFolders set objSubFolder=fs.GetFolder(sf) For Each f in objSubFolder.Files fname=fs.GetFileName(f) bname=fs.GetBaseName(f) ext=fs.GetExtensionName(f) pname=fs.GetFileName(fs.GetParentFolderName(f)) objRE.pattern=".*?([\d]*?$)" newname=objRE.replace(bname,pname&"$1") &"."&ext msgbox myFolder&fname&" -> "& myFolder&newname f.Name=newname Next Next 'ここまで
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
ファイル名をディレクトリ名にあわせるならディレクトリ分けする意味がないような・・・ いわゆるbatではなくwsh(vbs)であればもっとやりやすいと思います。 なお、 hoge1.txt fuga1.txt など存在すると競合しますが、絶対にでてこない保証があるという前提でいいのでしょうか?
お礼
回答ありがとうございます。 そうなんです、ディレクトリ分けする意味ないんです。。 wshですね、勉強してみます>< 競合するとは、複数のディレクトリ内に同じファイル名が存在するとという意味でしょうか?
お礼
ありがとうございます! 無事動きました!!本当に感謝です><