多くのフォルダの末尾に一括連番をつける処理

Q.

バッチ処理でファイル名の末尾に同一の文字を追加する処理は分かるのですが、フォルダ名の末尾に同一の文字を一括で追加するバッチファイルの処理はあるのでしょうか?

 

A.

★はじめに
●自分のPC環境では正常に動作しましたが、(PC環境・設定・フォルダー名またはファイル名などの理由で)もしかしたら多少の誤動作はあるかもしれません。すべてのパターンに合わせるのは何気に難しいので、一応、「自己責任」ということを予めご了承願います。

●(リネーム後は自動では元に戻せないので)本番前にいくつかのフォルダーまたはファイルを別フォルダーにコピーしてそのコピーでテストしてから行ってください。

●もし、パス内(ファイル名・フォルダー名)に半角記号が含まれていてエラー・正常動作しない場合は、リネーム(エラーになる半角記号→全角記号や記号以外)すると基本的に解決するかと思います。
※すべての半角記号が不可というわけではないみたいですが・・・

==========
■フォルダーの場合
-----↓から-----
@echo off
set DirP=[リネームしたいフォルダーがあるフォルダーパス]
set StringA=[先頭に追加したい文字列]
set StringB=[末尾に追加したい文字列]
pushd "%DirP%"for /f "usebackq delims="%%f in (`dir /ad /b /on ^| findstr "."`) do (
ren "%%f""%StringA%%%f%StringB%")
exit
-----↑まで-----

【例:】
-----↓から-----
@echo off
set DirP=D:\Sample\sample
set StringA=
set StringB=Sample
pushd "%DirP%"for /f "usebackq delims="%%f in (`dir /ad /b /on ^| findstr "."`) do (
ren "%%f""%StringA%%%f%StringB%")
exit
-----↑まで-----


指定箇所(↓)書き換え→上書き保存→ダブルクリックして実行
[リネームしたいフォルダーがあるフォルダーパス]
[先頭に追加したい文字列]
[末尾に追加したい文字列]


「リネームしたいフォルダーがあるフォルダー」内のすべてのフォルダーがリネーム対象です。


もし、フォルダー名に特定文字列が含まれているフォルダーのみをリネーム対象にしたい場合は↓

【例:】
フォルダー名に「テスト」という文字列が含まれているフォルダーのみリネーム対象
-----
findstr "."↓
findstr "テスト"-----

先頭に文字列を追加しない場合は「set StringA=」
末尾に文字列を追加しない場合は「set StringB=」


リネーム後のフォルダー名が重複する場合はリネームされません。

====================
■ファイルの場合
-----↓から-----
@echo off
set DirP=[リネームしたいファイルがあるフォルダーパス]
set StringA=[先頭に追加したい文字列]
set StringB=[末尾に追加したい文字列]
pushd "%DirP%"for /f "usebackq delims="%%f in (`dir /a-d /b /on ^| findstr "."`) do (
IF not "%%f"=="%~nx0"(
ren "%%f""%StringA%%%~nf%StringB%%%~xf")
)
exit
-----↑まで-----

【例:】
-----↓から-----
@echo off
set DirP=D:\Sample\sample
set StringA=
set StringB=Sample
pushd "%DirP%"for /f "usebackq delims="%%f in (`dir /a-d /b /on ^| findstr "."`) do (
IF not "%%f"=="%~nx0"(
ren "%%f""%StringA%%%~nf%StringB%%%~xf")
)
exit
-----↑まで-----


指定箇所(↓)書き換え→上書き保存→ダブルクリックして実行
[リネームしたいファイルがあるフォルダーパス]
[先頭に追加したい文字列]
[末尾に追加したい文字列]


「リネームしたいファイルがあるフォルダー」内のすべてのファイルがリネーム対象です。


もし、ファイル名に特定文字列が含まれているファイルのみをリネーム対象にしたい場合は↓

【例:】
ファイル名に「テスト」という文字列が含まれているファイルのみリネーム対象
-----
findstr "."↓
findstr "テスト"-----


先頭に文字列を追加しない場合は「set StringA=」
末尾に文字列を追加しない場合は「set StringB=」


リネーム後のファイル名が重複する場合はリネームされません。

 

おわり