• ベストアンサー

フォルダ名をファイル名の先頭に追加できるバッチ

例えばDドライブ直下にAからZまでの26個のフォルダがあり、例えばフォルダAの中に01から99までの連番で01.txt~99.txtと言うものがあったときに、バッチファイルのアイコンにフォルダAをドラッグアンドドロップするとフォルダ内のファイルがA01.txt~A99.txtと言うファイルが生成される、なお、フォルダはAからZまでまとめてバッチファイルのアイコンにドラッグアンドドロップしたらファイル名をリネームできるものを希望します、そのようなバッチはどのように作ったらよいのでしょうか。 当方の環境はwindows7 HomePremiam 64bitです。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.5

>現在バッチファイルは そんな馬鹿な。No3のやりとりはどうなったんですか? for %%A in (%*) do call :sub %%A pause goto :EOF :sub set "A=%~nx1" for %%B in (%1\*.txt) do ren "%%B" "%A%%%~nxB" goto :EOF となっているはずですが。

voc10000
質問者

お礼

>そんな馬鹿な。No3のやりとりはどうなったんですか? No3のやりとりというのは、No.1とNo.2とは別にテストのためにバッチファイルを作って試して見たものだと理解していたのですが、違ったのでしょうか? とりあえず、今回ご回答いただいたように編集し、実行したところ、リネームはされず、次のような画面が出て止まりました。 D:\>for %A in (D:\a) do call :sub %A D:\>call :sub D:\a D:\>set "A=a" D:\>for %B in (D:\a\*.txt) do ren "%B" "a%~nxB" D:\>goto :EOF D:\>pause 続行するには何かキーを押してください . . .

voc10000
質問者

補足

失礼、うまく私の希望が伝わっておりませんでした。 私が質問として、あるフォルダに拡張子がtxtの連番のファイルがあるときのことを書きましたが、これはひとつの例であり、リネームしたいのはtxtファイルに限らなかったのです。 そこで、今回、ご回答いただいたバッチファイルの中の txt の箇所を * に編集したところ、希望していたことがうまくいきました。おかげで、手間が省けるようになり大変助かります。 丁寧に何度もやり取りをしていただき、ありがとうございました。

その他の回答 (4)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.4

>指定されたバッチ ラベルが見つかりません - sub タイプミスですね。 コピペしてください。 後半の :sub の部分がおかしい。

voc10000
質問者

お礼

回答ありがとうございます。 No1とNo2のご回答を参考に編集し、 現在バッチファイルは for %%A in (%*) do call :sub %%A goto :EOF :sub set "A=%~nx1" for %%B in (%1\*.txt) do ren "%%B" "%A%%%~nxB" goto :EOF となっております。 コピペして編集したのですが、バッチファイル中に間違いがございますでしょうか?

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.3

エラー内容を確認してください。 for %%A in (%*) do call :sub %%A pause goto :EOF とすると、実行後に、画面が止まります。

voc10000
質問者

お礼

回答ありがとうございます。 下記のメッセージが出て画面が止まりました。 D:\>for %A in (D:\a) do call :sub %A D:\>call :sub D:\a 指定されたバッチ ラベルが見つかりません - sub D:\>pause 続行するには何かキーを押してください . . .

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.2

お書きの条件であれば問題ないはずです。 もしかして、フォルダ名のフルパスに空白などが含まれていたりしますか? その場合は、ren の部分を ren "%%B" "%A%%%~nxB" と引用符を付けてください。 set A=%~nx1 の部分も、 set "A=%~nx1" とした方が安全ですね。

voc10000
質問者

お礼

ありがとうございます。 テストに使ったフォルダ名とファイル名は空白がありました。 ですので、No.2のご回答で教えていただいたようにバッチファイルを編集し、引用符をつけてみました。 しかし、リネームは実行されず、フォルダをDドライブ直下に移動し、フォルダ名をaとし、ファイル名を半角英数字のみにしたのですが、それでもやはりリネームは実行されませんでした。

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.1

質問を文字通り読むと、ファイルを新規生成するように読めますが、おそらくリネームしたいのですよね。 for %%A in (%*) do call :sub %%A goto :EOF :sub set A=%~nx1 for %%B in (%1\*.txt) do ren %%B %A%%%~nxB goto :EOF %* がドロップされた物一覧 %~nx1 %~nxB がパス名の最下位部分の取り出し

voc10000
質問者

お礼

ありがとうございます。 ご推察のとおり、希望していることはリネームです。 しかし、やってみたのですが、できませんでした。 もしかしたら、ドラッグアンドドロップしたフォルダの中のファイルをリネームする設定ではなく、ドラッグアンドドロップしたフォルダそのものをリネームするバッチ 例として、 setlocal enabledelayedexpansion :LOOP if "%~1"=="" goto :EOF set A=%~dp1 for %%A in ("!A:~0,-1!") do ren "%~1" "%%~nxA%~nx1" shift goto LOOP というようなバッチになっていると思ったりもしたのですが、 バッチが実行されても特に処理されていないように見えます。

関連するQ&A

  • フォルダ名をファイル名の頭につけるバッチ

    お世話になります。 現在、ファイルをフォルダ単位で保存していて、保存しているフォルダは数百個あり、各フォルダに入っているファイルの数はまちまちなのですが、各フォルダの中にあるファイル(全てフォルダの直下にファイルを保存しており、サブディレクトリは作成していないはずです)の頭にフォルダ名を一括でつけたいのですが、そのようなバッチファイルは作れるでしょうか? やりたいこととしては、例えば、"6753シャープ"というフォルダ内に複数個のファイル、例えば"01.txt"、"02.txt"、"03.txt"というファイルがある場合、 それらのファイルをまとめてバッチファイルのアイコンにドラッグアンドドロップしたらファイルを"6753シャープ01.txt"、"6753シャープ02.txt"、"6753シャープ03.txt" というようにリネームさせることは可能でしょうか? 使用しているPCはWindows7 Professionalです。

  • バッチファイルでファイル名を連番にしたい

    たとえばフォルダの中にfirst.txt second.txt third.txtがあって、 これを11.txt 12.txt 13.txtの順の連番でバッチファイルで リネームされるようにするにはどうすればよいのでしょうか? (forth.txtがあれば14.txtになります。ForとRen等使用で可能?) ご存知の方がおられましたらご回答をよろしくお願いします。

  • バッチファイル フォルダ名をファイル名に置き換える

    ある複数フォルダに格納されているファイルを、フォルダ名に リネームするバッチファイルを作成したいです。 ●リネーム前 C:\リネーム\あいうえお\data.txt C:\リネーム\かきくけこ\data.txt C:\リネーム\さしすせそ\data1.txt C:\リネーム\さしすせそ\data2.txt C:\リネーム\たちつてと\data1.log C:\リネーム\たちつてと\data2.log C:\リネーム\なにぬねの\data.log ↓ ●リネーム後 C:\リネーム\あいうえお\あいうえお.txt C:\リネーム\かきくけこ\かきくけこ.txt C:\リネーム\さしすせそ\さしすせそ 1.txt C:\リネーム\さしすせそ\さしすせそ 2.txt C:\リネーム\たちつてと\たちつてと 1.log C:\リネーム\たちつてと\たちつてと 2.log C:\リネーム\なにぬねの\なにぬねの.log 知識がなく申し訳ありませんが、お助け願います。。 pause cd c:\リネーム dir /s /b C:\リネーム\ > file.tmp for /f "delims=" %%F in (file.tmp) do ( for /f "delims=\ tokens=3" %%D in ("%%F") do ( REN %%F C:\リネーム\%%D\%%D%%~xF )) del file.tmp pause どうもうまくいきません。。。

  • 指定フォルダ配下のファイルを個別圧縮するバッチファイルの作成

    下記の処理を行うバッチファイルは作れないでしょうか? 1.バッチファイルにフォルダをドラッグ&ドロップ 2.ドラッグ&ドロップしたフォルダ配下のファイルを全て個別圧縮する (例.C:\AAAをドラッグ&ドロップした場合) フォルダAAA | ・111.txt | LフォルダBBB | ・222.txt | ・333.txt | LフォルダCCC | ・444.txt | LフォルダDDD ・555.txt ↓ フォルダAAA | ・111.zip | LフォルダBBB | ・222.zip | ・333.zip | LフォルダCCC | ・444.zip | LフォルダDDD ・555.zip

  • バッチファイルでのリネームについて

    当方WinXPです。 いろいろ調べたのですが、自分のやりたい形での紹介は見つけられなかったので質問させてください。 aaa001.txt aaa002.txt aaa003.txt、のように連番になっているファイルを、 abc001.txt abc002.txt abc003.txt、のように別の連番にリネームするバッチを作りたいんですが、やり方がわかりません。 その場限りではなくて、何回も使いまわせるようにしたいです。 ちなみにやりたい作業内容としては 1:連番のファイルの名前を別の連番にリネーム。 ↓ 2:リネームしたファイルを結合。 ↓ 3:元のファイルを消去。 という感じで、2~3は自力で出来そうなのですが、1の作業ができないので困っています。 分かりにくい質問で申し訳ないですが、是非教えてくださると嬉しいです。 よろしくお願いします。

  • フォルダ名をファイル名の頭に追加するバッチ

    社内の規定でパソコンにフリーソフトをインストールができません。 フォルダ内の複数あるファイル名の頭にフォルダ名を付け足すバッチファイルを作る事は可能でしょうか? 例 フォルダ名 ABC ファイル名 123.jpg 変更後 ABC123.jpg フォルダをバッチファイルにドラッグ&ドロップでファイル名を変更出来るようなものが有ればとても助かります。 わかる方がいましたら教えて頂きたいです。 宜しくお願いします。 使用するパソコンのOSはWindows7です。

  • バッチファイルでファイル名をリネームのコマンド

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

  • 特定ディレクトリ以下の複数のフォルダ名とファイル名を一括で連番にするバッチの作成

    特定のフォルダ(ディレクトリ)以下の複数のフォルダ名とファイル名を 一括で連番にしてくれる方法(連番+拡張子のリネーム)を教えてください。 ソフトでは簡単ですが*.bat ファイルで実行するスクリプトを 知りたいので宜しくお願い致します 例えば フォルダ0 ├フォルダ1 │ ├ a.txt │ ├ b.jpg │ └ フォルダ2 │    └c.exe └ フォルダ3   └ d.exe という構造があったとして 000000 ├000001 │ ├ 000000.txt │ ├ 000001.txt │ └ 000000 │    └000000.txt └ 000002   └ 000000.txt この様に特定ディレクトリ以下の複数のフォルダ名とファイル名を連番 (上記は6桁ですが001,002…など3桁などに対応できる)にしたいのです 以下の方法で特定のフォルダ内のファイルを.txtに変更まではできましたが、 特定のフォルダより下層のファイルを.txtに変更はできませんでした。 REN E:\フォルダ\フォルダ\*.* *.txt 上記のスクリプトは特定フォルダにあるファイルは拡張子の変更が出来ますが、 そのフォルダより下層の複数のフォルダ名とファイル名の拡張子の変更をできないので、 *.batファイルで連番+拡張子のリネームを一括でするスクリプトの明記をお願い致します。 ご存知の方、どの様なご意見でも構いませんので ご回答頂けると幸いです。宜しくお願い致します。

  • バッチファイルでファイル名をリネームのコマンドにつ

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 AAA.batというバッチファイルと”MU_日付.txt”というテキストがあります。 このテキストの日付部分は毎回変わります。例)MU_111226.txt このバッチファイルとMU_日付.txtは同じ階層にあります。 まず、このAAA.batをクリックしたら、この”MU_111226.txt” を ”読み込み.txt” という名前にリネームします。このリネーム処理の時、テキスト名が”MU”で始まるファイル以外は対象にしないようにしたいのです。 次にある処理を行って、その処理が済んだら”読み込み.txt”を”END_MU_111226.txt”といった元のファイル名に”END_”を付けた形でリネームして、同じ階層にある「処理済み」フォルダへ移動させたいのです。 ”END_” + ”元のファイル名”が無理であれば、”MU_111226.txt”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたjかご教授いただけますでしょうか。よろしくお願い致します。

  • DOSのバッチファイルでカレントフォルダを取得するには?

    現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。 おおまかな流れとして  1.ファイルのバックアップ  2.test.exeの引数にファイルのパスを渡す といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。 バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。 以下カレントフォルダを確認した結果です。 OS:Windows2000 実行バッチのパス: C:\Documents and Settings\user\デスクトップ\test.bat ---test.bat---- @echo off cd pause test.bat直接起動 C:\Documents and Settings\user\デスクトップ test.batにファイルをD&D C:\Documents and Settings\user 伝わりづらくて申し訳ございません。 宜しくお願い致します。

専門家に質問してみよう