バッチ: ループ中にファイル名を取得する方法

このQ&Aのポイント
  • バッチファイルを使用して、ループ中にファイル名を取得する方法についてご質問いただきました。
  • 複数階層のディレクトリ内に分散されたHTMLファイルを1つのファイルにまとめるコマンドを作成しているが、ファイルの切れ目にファイル名を挿入したい。
  • 現状のコマンドは問題なく動作しているが、ファイルとファイルの切れ目にファイル名を追加する方法を知りたい。
回答を見る
  • ベストアンサー

バッチ: ループ中にファイル名を取得する方法

分かりづらいタイトルですみません。 複数階層あるディレクトリの各所に分散されたHTMLファイルを、1つのファイルにまとめるコマンドを書いたのですが、ファイルとファイルのつなぎ目に、ファイル名を挿入したいのです。 現状のコマンドは次の通りです。 for /r /d %i in (*) do type "%i\*.html" >> "C:\hoge\combine.html" ちなみにHTMLの整合性とか、そのあたりはどうでもよいのです。 これはこれで問題なく動いているのですが、いかんせんすべてのファイルがべたっとまとめられてしまっています。ここで、ファイルとファイルの切れ目に(つまりファイルの先頭に)ファイル名を書き入れることはできないでしょうか? よろしくお願いします。 Windows 7/8 64bit

  • CGI
  • 回答数2
  • ありがとう数12

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

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

(for /r /d %i in (*) do for %j in (%i\*.html) do echo Filename:%j & type "%j") > "C:\hoge\combine.html" もしくは(普通は)、 (for /r %i in (*.html) do echo Filename:%i & type "%i") > "C:\hoge\combine.html"

tuktukrace
質問者

お礼

ありがとうございます! なるほど、こういう書き方をするんですね。勉強になりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

for って, ネストできなかったっけ?

関連するQ&A

  • スクリプトファイル名を取得するには?

    スクリプトファイル名を取得するには? 今日から書籍を読みながら、Rubyの勉強を始めました。 Rubyを学ぶ上で重要ではないことなのですが、教えてください。 コマンドラインからRubyスクリプトを実行した場合、そのスクリプトの中で実行したスクリプトのファイル名を取得したいです。例えば、次のコマンドを実行した場合、"hoge.rb"を取得したいです。 > ruby hoge.rb スクリプトにハードコーディングすることなく、スクリプトファイル名を取得することは可能なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Ruby
  • macでバッチファイルを作成したい

    お世話になります。 macで下記のようなバッチファイルを作成したいのですが、 実現方法が全くわかりませんでした。。。 ターミナル・Applescriptどちらでも結構ですので、 (1)「バッチファイル動かすフォルダ」の2階層上にある  「雛形」フォルダを、その2階層上の場所に「sample」フォルダ  という名前でコピー ※c\hoge\hoge2\hoge3の階層で、hoge3で、バッチファイルを起動すると   hogeにある「雛形」フォルダのコピーが、hogeに「sample」という   名前で作成  ※フォルダ名は可変のため、階層で表現したい (2)「バッチファイル動かすフォルダ」にある「上書き」フォルダを  2階層上にある「sample」フォルダに上書きする  ※「上書き」フォルダは残ったままで、「sample」フォルダに   上書きしたい ターミナル・Applescriptどちらでも結構ですので、 お手数で申し訳ございませんが、教えて頂けないでしょうか? ネットを見ても全くわからない程の能力でして、 ソースを見せて頂ければ大変うれしいです。。。 何卒よろしくお願いします。

  • バッチファイルでファイル名に文字列を挿入したい。

    フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。

  • バッチファイルによるデータ参照

    コンピュータ名がテキストファイル名(ファイル(1))となっているファイルがあります。 このファイルの先頭行にコンピュータ名に該当するIPアドレスを入れたいと考えています。 そのために、コンピュータ名⇔IPアドレス表を事前にテキストファイル等で用意してそのファイル(ファイル(2))からバッチファイル実行時にファイル(1)の先頭行へ書き込むことはできますでしょうか? もしできるのであればその方法(コマンドレベル)を教えていただければありがたいです。よろしくお願いいたします。

  • バッチファイルの作り方

    こんにちは、ただいま仕事で使用する場面もありまして、バッチファイルの作成の勉強中なのですが、調べてもなかなか分からないことがありましたので、質問させていただきます。 1つ目、ファイル名の変更 たとえば、P01001(2006.5.1).jpgというファイル名が有ります。このファイル名で、P01001をPic01と変換して、日付も括弧ごと消したいのですが、どうのようにすれば出来るのでしょうか?PをPicに変換と010を消す作業はすべて同じようにかかれていて、日付だけは、違う日付もあるので、それにも対応出来るようにしたいです。 02.次に中身の無いフォルダを検索して削除したいのですが、うまくいきません。rd コマンドでファイル名を*にしてもだめでした。 出来れば、フォルダの下の階層も検索して、消せる様にしたいのですが、やり方に検討もつきません、 是非お願いいたします。

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

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 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”を「処理済み」フォルダへ移動させるだけでも構いません。 このような処理は可能でしょうか? どなたかご教授いただけますでしょうか。よろしくお願い致します。

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

    お世話になります。 バッチファイルのコマンドについて質問させていただきます。 【やりたいこと】 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かご教授いただけますでしょうか。よろしくお願い致します。

  • 数千件のファイル名を文字を小文字化して文字を追加

    どなたか、助けてください。 OSは、ウインドウズ7です。 特定のフォルダに入っている 数千件の ファイル名を (1) 小文字かして (2) 文字を追加したいのです。 いろいろ、調べたんですが、コマンドというものを使って 名前を変えるという下記のものは見つけたのですが >あるフォルダ内の.jpgファイルのファイル名の先頭に「2007_09_」という文字列を付加する例 >ファイル名を変更したいフォルダで、 >「for %i in (*.jpg) do ren %i 2007_09_%i というの応用して、 そのなかのファイル名を大文字半角から小文字半角に変えて さらに文字列を追加したいのです。 (3) また、そのファイル名のリストを作りたい のですが、未熟な私には、上手く 出来ず、困っています。 どなたか、詳しいお詳しい方、 (1) (2) (3) のコマンドの書き方をお教え助けてください。 お願いします。

  • バッチコマンドで指定行を抽出しファイル名を含める

    日付毎に複数ファイルになっているftpのログファイルから必要な行だけを1ファイルに まとめたいのです set spath=d:\データ for /d /r %spath% %%d in ( * ) do ( type "%%d\*.log"|findstr /i ".csv">>%spath%\抽出ログ.txt ) で目的のものにかなり近いデータを抽出することができました ex110825.log 00:01:21 172.21.111.123 [6443]created /hoge/hoge.csv 226 しかし問題がありこのデータには日付がありません 日付部分はファイル名に含まれていますex110825.logのように・・・・ なので ex110825.log 00:01:21 172.21.111.123 [6443]created /hoge/hoge.csv 226 工夫次第でこのような形でデータを出力する事ができるでしょうか? アドバイス下さい

  • バッチファイル 文字列操作のやり方

    お世話になります。 バッチファイルのコマンドについてですが、 for文の中で 一番下の階層のファイル名の先頭5バイトが "abcde"のものだけ処理対象にしたいと考えています。 例えば、 C:\tempに以下のファイルがあったら C:\temp\abcdefg.txt    ・・・(1) C:\temp\xxxxxxx.txt    ・・・(2) C:\temp\abcde.txt    ・・・(3) C:\temp\abc.txt    ・・・(4) C:\temp\abcdezzzz.txt    ・・・(5) (1)、(3)、(5)だけを処理させたいと考えています。 実装方法として、以下を考えましたがうまくいきません。 dir /s /b /a-d C\Temp > file.txt for /f "delims=" %%F in (file.txt) do ( set A=%%~nF% if "%%A:~0,5%"=="abcde" ( <処理コマンド> ) ) おそらくfor文の中で何個も命令を記述できないということと、 パラメータ修飾子の指定が間違っているからだと思われますが、 うまくできない理由を知りたいです。 よろしくお願いいたします。

専門家に質問してみよう