コマンドプロンプトを使用して複数フォルダのファイル名一括置換する方法

このQ&Aのポイント
  • コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加える方法について教えてください。
  • 対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。
  • 現在、同じフォルダに格納されているファイルに対しては、for %i in (*.xls) do ren %i [LOCAL]%i のコマンドで実行できていますが、カレントフォルダの配下すべてのフォルダを対象にする方法を教えていただけますか?
回答を見る
  • ベストアンサー

【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について

【コマンドプロンプト】複数フォルダのファイル名一括置換の方法について お世話になっております。 コマンドプロンプトを使用して、カレントフォルダ配下のすべてのフォルダに格納されているEXCELファイルの名称の最初に[LOCAL]という文字を加えたいと考えています。 ファイル一括置換を行うフリーソフト(ファイル名変換君など)では、可能なのですが、 対象のファイルは、バッチファイルで他のフォルダからファイルをコピーをしてきているため、ファイル名変更もコピーの際に一括でできないかと思い質問をさせていただきました。 現在、同じフォルダに格納されているファイルに対しては、下記にて実行はできています。 for %i in (*.xls) do ren %i [LOCAL]%i しかし、カレントフォルダの配下すべてのフォルダを対象にしたいため、下記のように変更すると、エラーとなってしまいます。 for /r %i in (*.xls) do ren %i [LOCAL]%i おそらく・・・変数%iに、ファイルのフルパスが格納されてしまい、思い通りの動作になっていないと推測しています。 どのように作成すればよいか教えていただけませんでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.1

私の環境では、これでうまく行きました。 for /r %%i in (*.xls) do ren "%%i" "[LOCAL]%%~ni.xls"

参考URL:
http://sgry.jp/pgarticles/batch.html

その他の回答 (1)

  • shokker02
  • ベストアンサー率45% (204/446)
回答No.2

対象が 「現フォルダ(ディテクトリ)直下のフォルダ」が条件ですが for /d %a in ( *.* ) do ren %a LOCAL_%a で一応イケます。Windows2000SP4 の command ですが確認しました。 (/d で対象をフォルダのみに指定 ) (ren %a LOCAL_%a でフォルダ名の頭にLOCALを付ける) ただ、原因不明ですが「頭にLOCAL_ を付ける」をなぜか2~3回行って しまい、LOCAL_LOCAL_LOCAL_folder... のような名前になってしまう事が頻発しました。 成功した事もあるので、なぜそうなるのかわかりません。 Windows のコマンドプロンプトによっても異なるかも知れないので、 事前にテスト環境でテストしてください。 リネームでファイルを失う事はありませんが、大量だと元に戻すだけでも 大変なので。 ならば、ということで、同じ構造を利用して 「フォルダ名を1つずつリネームするバッチファイルを作る」 という手を考えました。 最初にファイル BATCH.BAT が存在しない事を確認し、ある場合は削除して下さい。 既に他の用途に使ってるならファイル名を変更してください。 for /d %a in ( *.* ) do echo ren %a LOCAL_%a >>BATCH.BAT これを実行するとバッチファイル BATCH.BAT が作られ、中身が ren folder1 LOCAL_folder1 ren folder2 LOCAL_folder2 ren folder3 LOCAL_folder3 : のようになりますから、そしたら BATCH.BAT を実行させてください。

abcde0116
質問者

お礼

バッチファイルを作成するという発想がありませんでしたので、 非常に参考になりました。 フォルダ名のrenameの際は、shokker02さんのコマンドを使用させていただきます。 ご回答いただき、ありがとうございました。

関連するQ&A

  • コマンドプロンプトによるファイル名一括変換

    コマンドプロンプトで、サブディレクトリを含めたファイル名の一括変換 をしたいのですが、次のコマンドを叩いたら、「コマンドの構文が間違っています」と出てしまいました。どこがおかしいのでしょうか? カレントディレクトリの中の「*.txt」ファイルをすべて「*.doc」にしたい場合↓ for /r /d %i in (*) do ren %i\*.txt *.doc よろしくお願いします。

  • コマンドプロンプトのリネームとワイルドカードの使い方

    コマンドプロンプトを使ってファイルのリネームをしたいと思っています。 ほげ 第1章ふが.xls ほげ 第2章ふが.xls ... (たまに章が飛ぶこともあります) と続くような、ファイルの集まりなのですが これを (11)×ふが.xls (12)×ふが.xls ... という様にしたいと思っています. Windowsのコマンドプロンプトで ren "ほげ 第*章ふが.xls" "(1*)×ふが.xls" とやったところうまく行きませんでした. また試しに, for %i in [0-9] do dir /b "ほげ 第%i章ふが.xls" で一覧をみようと思ったところ[0-9]の使い方が誤っていますと言われました. dir /b "ほげ 第*章ふが.xls" では問題なく表示されました. リネームのいい方法と[0-9]の正しい使い方を教えてください。

  • コマンドプロンプトでファイル名一括変更

    コマンドプロンプトのrenコマンドでフォルダ内の同一拡張子のファイル名の拡張子を一括変更することはできますが、 (例 ren *.txt *.htm ) 拡張子以外の共通部分を拡張子を含む形で一括変更することはできませんか? たとえば拡張子のないd01という文字列で終わるファイル名を一括してd01の部分を消して拡張子を.jpgにしたいのです。

  • コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい

    コマンドプロンプトでファイル名に含まれるスペースを別の文字に置換したい BAT実行や、BATにドロップする程度の操作でファイル名置換したいと思っています。 たとえば、「abcTEST123.txt」というファイルを下記のバッチにドロップすると、 「abctest123.txt」と言うファイル名に置換されます。 for %%A in (*TEST*.txt) do call :sub %%A :sub set A=%1 ren %A% %A:TEST=test% しかし「TEST」をスペースにしてもファイル名の置換はできません。 コマンドプロンプトではスペースは扱えないのでしょうか。 解決策がありましたらご教授願います。

  • コマンドプロンプトでフォルダの中身を空にするコマンドはありますか

    コマンドプロンプトで、あるフォルダの配下にあるサブフォルダとファイルを全て削除するようなコマンドはないでしょうか? サブフォルダやファイルの名前は毎回変わります。

  • 一括で、画像のファイル名の頭4文字を削除したい

    一括で、画像のファイル名の頭4文字を削除したいと思っています。 拡張子はJPGになります。 現在、コマンドプロンプトで、下記のようにコマンドを作っていますが、 プログラムが不慣れで、どこが、間違っているのかが、 ご教授いただけますでしょうか。 for %F in (*) do ren "%F" "%~nF" for %F in (*) do ren "%F" "%F"

  • コマンド プロンプトでリネーム

    C:\Documents and Settings\aaa\に以下のように複数のファイルがあります。 あああ.xls いいい.xls ううう.xls えええ.xls ・ ・ ・ これを、先頭に"test_"をつけて、コマンドプロンプトを使い以下のように、ren でリネームするにはどのようにすればよいでしょうか? test_あああ.xls test_いいい.xls test_ううう.xls test_えええ.xls ・ ・ ・ よろしくお願いします。

  • 複数フォルダ内のファイルを一括コピーする方法

    環境はWindows7です。 下記構成のファイルを一括で特定のフォルダにコピーする方法を探しています。 C\aaa\111.txt C\aaa\112.txt ・・・ C\bbb\121.txt C\ccc\33.txt ------------------ ⇒C\ddd 配下へコピーしたい 方法(1):F3で「.txt」で検索してヒットしたものを一括でコピーする。 方法(2):.batファイルを使ってやる。 方法(2)について、下記のように書いてみました。 REM 複数フォルダーの不特定多数のファイルを特定フォルダーにコピーする pause cd %~dp0 dir /b No* >list.txt for /F %%i in ( list.txt ) do copy /y %%i\*.txt 特定フォルダー pause カレントディレクトリにある複数フォルダ名をlist.txtに出力し、 それをまた読み込んでforを使って特定フォルダーにコピーする。 これだと同名のファイルがあった場合でも問答無用でどんどん上書きされてしまいます。 「コピーするが両方のファイルを保持する」状態にしたいんですが、 何か方法はないでしょうか・・・?

  • 拡張子のみ一括変更したい コマンドプロンプト

    パソコンに詳しいものでなく、素人です。 どうかお助けくださいませ。 あるフォルダ内の拡張子を JPG→jpg に変更したく、 コマンドプロンプトを使用して色々調べて作業してみました。 結果、うまくいかずです。 (事情があり、変更しないといけないです) windoews8 フォルダ内に入っているのはすべてJPGファイルです。 すべて拡張子変更対象ファイル。 対象フォルダを開き、「ファイル」→コマンドプロンプト を開く 下記表記がされています。 C:¥Users¥○○○¥Desktop¥□□□¥△△△> この「>」の後に ren*.JPG*.jpg を打ち込み「enter」クリック 内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。 と表記されてます。 下記URLなど参考にいろいろ試してみましたが、根本的にわかっておらず 解決の糸口がみつかりません。 言葉足らずかとは思いますが、どうか有識者の方ご教授お願いいたします。 http://q.hatena.ne.jp/1212393075 http://q.hatena.ne.jp/1212393075ren *.JPG *.jpg http://www.adminweb.jp/command/bat/index1.html

  • ftpコマンドで再帰的にフォルダとファイルを見たい

    コマンドプロンプトのftpコマンドを使用して、あるディレクトリ配下にあるフォルダとファイル一覧を再帰的に見たいです。 「コマンド:dir」では、ディレクトリ配下のフォルダ一覧は見れるのですが、フォルダの下にあるファイルまでは見ることができません。 どなたかご教授頂けるとうれしいです。 よろしくお願いします。