web-dev-qa-db-ja.com

フォルダー内のすべてのファイルとフォルダーにプレフィックスを追加するにはどうすればよいですか? (ウィンドウズ)

次のコマンドは、ファイル名のみを変更し、フォルダーは変更しません。

for %a in (*) do ren "%a" "00_%a"

14
MatMis

次のコマンドは、ファイル名のみを変更し、フォルダーは変更しません。

for %a in (*) do ren "%a" "00_%a"

ノート:

  • 上記のようにforを使用することはお勧めしません。
  • ファイルの名前が複数回変更される可能性があります。
  • 理由は以下をご覧ください。

cmdシェルで以下を使用します。

for /f "tokens=*" %a in ('dir /b') do ren "%a" "00_%a"

バッチファイル(置換%%%):

for /f "tokens=*" %%a in ('dir /b') do ren "%%a" "00_%%a"

注意:

使用するのは重要ですFOR /Fで、単純なFORではありません。

FOR /Fは、反復を開始する前にDIRコマンドの結果全体を収集しますが、単純なFORは、内部バッファーがいっぱいになった後に反復を開始します。これにより、同じファイルの名前を複数回変更するリスクが追加されます。

dbenham によるアドバイス 複数のファイル名の末尾に「テキスト」を追加する への回答


参考文献

15
DavidPostill

ファイルではなくフォルダー(ディレクトリ)でこのForループを実行するには、単に_/D_スイッチを含めます。

for /D %a in (*) do ren "%a" "00_%a"

_for /?_から:

FOR/D%variable IN(セット)DOコマンド[コマンドパラメータ]

_If set contains wildcards, then specifies to match against directory
names instead of file names.
_
0