• ベストアンサー

コマンドプロンプトのRENに関して

フォルダ内のファイル全ての内、名前の先頭に「蟻」と付いた漢字を消したく思うのですが、 膨大な数の為、batファイルを製作して処理したいんですが 文をどう書いたら良いのか教えてください、お願いします 蟻0101.jpg→0101.jpg 蟻1128.jpg→1128.jpg

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

  • ベストアンサー
回答No.4

誰もまともな回答になっていないとは(笑) 確かにフリーソフトは便利ですけどね… さて。 説明が不足している部分があるので、「フォルダ内には対象外のファイルはなく、またサブフォルダもない」と仮定します。 SETLOCAL ENABLEDELAYEDEXPANSION CD /D 対象フォルダ FOR /F "delims=" %%F IN ('DIR /B *.jpg') DO ( SET N=%%F REN %%F !N:~1! ) ・CDで対象フォルダに移動 ・FORの/Fオプションを使い、フォルダ内のファイル名を順に取得 ・それぞれの名前を「元の名前の2文字目以降」にリネーム という、内容としては単純なコードです。「対象フォルダ」はそちらで変更してください。また、サブフォルダがある場合は括弧内のDIRに/Sオプションも追加してください。 FORの細かい解説は面倒なので省きます。/Fを使うと括弧内のシングルクォートで囲まれた文をコマンドとして実行できると、とりあえず覚えましょう。 「SETLOCAL ~」と「!で囲まれた変数」は「遅延展開」と呼ばれる処理の手法です。こうしないと毎回変わる%%Fの内容を正しく処理に組み込めないという風に覚えればいいです。。 詳しく知りたい場合は「FOR」「SET」「SETLOCAL」のヘルプを見てみてください。

kawokuraukaeru
質問者

お礼

飾りのように思ってたSETの活用と !N:~1!が一文字少ないというのを初めて目にしました 勉強させて頂きました、ありがとうございました

その他の回答 (3)

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.3

バッチを作るより専用のフリーソフトの方が楽だと思いますが。 バッチでやってみたいという事であれば別ですが。 「ファイル名 一括変換」などで検索できます。 下記などで探してみてください。 http://www.vector.co.jp/vpack/filearea/win/util/file/name/ ちなみに私はFlexible Renamerを使っています。

  • vaidurya
  • ベストアンサー率45% (2714/5983)
回答No.2

矩形領域のカットアンドペーストができるテキストエディターがあると そういう定形の大量変更を行なう、シーケンシャル処理のスクリプトを作れますよ。 MS-DOSの時代はVzのBLOCK.DEFを使っていましたが この程度の機能は探せば、いろんなテキストエディターにあると思います。 効率とか応用を考えると、sedみたいなツールを使うほうがいいでしょう。 また、正規表現を学ぶことで、sedやgrepなどだけでなく 正規表現に対応したテキストエディターを含む、いろんなソフトで 柔軟な処理ができるようになります。 なお、正規表現では、たとえば、ある文字が行頭にある場合だけ それを削除したり、置換するような処理に役立ちます。 sedはコマンドや正規表現で指定されたシンプルな処理を 連続した大量の文字列に対して行なうテキストファイル用のフィルター的なツールです。 まぁ、私自身は、自分が書いたプログラムなどのバグが怖いので ミスが起きにくい、シーケンシャルに処理するスクリプトを多用します。 変換済のaviファイルのリストを加工して 元データを削除するスクリプトを作ったりもします。 そういった場合は、行頭にrmを入れたり、行末のaviをtsに書き換えたりするので 正規表現を使うことになります。 #添付画像はLinux系OSのKDE系のテキストエディターKate

kawokuraukaeru
質問者

補足

わざわざスクリーンショットまで作って頂き、大変嬉しく思います 何か道具を使うのは大変便利でありますが、 作って頂いたbatファイルをイジったりじっくり試行錯誤するのも一つの楽しみだったんです 初めからそう書くべきでした、本当に申し訳ありませんでした

noname#187562
noname#187562
回答No.1

まず、カレントディレクトリ(現在の対象フォルダ)にcange dhirectry します。 cd c:\ <--これはルートにcdします。 該当のフォルダへは、 cd フルパス です。 フルパスとはルートから該当フォルダまでのフォルダ名のパスです。 cd c:\(ここは該当のフォルダ) ren 蟻0101.jpg 0101.jpg ren 蟻1128.jpg 1128.jpg とバッチを書いてfimename_rewrite.bat などで保存して。 fimenake_rewrite.bat を実行。 もしかしたらcdで引っかかるかもしれませんが、 その場合、実行前に ひとつづつ ルートから cd すると該当フォルダにカレントパスが行き着くとおもいます。 その状態で、renだけのコマンドのバッチファイルで実行すればいいわけです。

kawokuraukaeru
質問者

お礼

回答ありがとうございます 蟻0101.jpg蟻1128.jpgなんですが、これは一例でして そんなファイルがかなりの数があり、batファイルで処理したく思っています 言葉足らずで申し訳ありませんでした

関連するQ&A