- ベストアンサー
ある拡張子のファイル全てを上書きするソフト
あるフォルダにある全てのフォルダ内にある、特定の拡張子のファイルを、指定した同じ拡張子のファイルに、(中身は問わず)置き換えたいのですが、何か良いソフトはありませんか。 例えば、Aというフォルダ内のa00からa99までのサブフォルダ内にある、*.cgiというファイルを特定の●●.cgiに全て置換(上書き保存すること)したいのです。ちなみに、*.cgiというファイルは全て異なるため、ファイル内の複数文字列を置換するソフトは使えません。。 どうぞ、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>Win上でもシェルは走るんでしょうか? cygwinやmingwが有名かな。 cygwinやmingwでぐぐれば出るけど他もあるかもしれないから一応 http://www.google.co.jp/search?q=win%E3%81%A7%20bash&hl=ja&lr=lang_ja あとはちょいと手間になるけどdosでも近い事は出来るよ 手間ってのはコマンドを叩く回数が増えるって事。 やり方は殆ど一緒で「dir /b /s > ../list.txt」でlist取得してディレクトリ名のみとcgiじゃないのは除外(テキストエディタの正規表現置換使えばすぐかと) copy ..\●●.cgi ..\B\$1 とかをループするように書かれたバッチにリストを放り込んで起動・・・辺りかな。。。 (先にmkdirするなら「dir /b」でフォルダリストだけ取っておいてそれを(以下略) dosの方はあんまり書かないからもっと自信ない妖しいスクリプトになっちゃいそうなのでやめとく
その他の回答 (2)
もしかして ●●.cgi というファイルの中身を a00~a99に入ってるcgiファイルの中身として保存したい って感じの事を言ってるわけ? それならできなくもないよ winじゃないシェルでだとやりやすいかな。 そのa00~a99のサブフォルダが有るフォルダをAとして、それを複製するのをBとしてAで得られるファイル一覧の名前でB階層で●●.cgiの内容で展開 。。。 bashでAの上層に●●.cgiが有るとして(カレントAフォルダ) ~/A/ $ for f in `ls -1`;do mkdir ../B/$f;done;for n in `find . | grep .cgi`;do cat ../●●.cgi > ../B/$n;done ・・・かな・・・ちょっと自信ない。誰か補完して。。。
補足
再度ご回答、どうもありがとうございます! シェ…シェルですか。。。 かなり以前、Unixでプログラム(もどき)を書いてたときは使ってましたが、今はとんとご無沙汰です。。(^^+) bashもすっかり忘れました。(書いて頂いたのは何とな~く分かりますが。。) …でもそうですよね、こんなことに対応したフリーウェアを見つけるよりコマンドベースで処理した方が早そうですね。。 ちなみに基本的な質問で申し訳ないのですが、Win上でもシェルは走るんでしょうか??Unixでやってたのと同じ感じなのかな。。 何か、初心者が入りやすく説明されたHPをご存知でしたら、ご教授頂けませんでしょうか。よろしくお願いいたします。。
http://www.vector.co.jp/vpack/filearea/win/util/file/name/ >*.cgiというファイルは全て異なるため >*.cgiというファイルを特定の●●.cgiに全て置換 具体的な置換法則が判らない。 xxx.cgi → xxx●●.cgi なのか xxx.cgi → ●●.cgi なのか 前者ならただの付け足し 後者なら連番系 それとも ●●.cgi に全結合したいのか ●●は連番ではなく固定名だとすると重複するから結果としてオカシイ。 親フォルダ名を使って aaa/xxx.cgi → aaa.●●.cgi にしたいのか http://www.vector.co.jp/soft/win95/util/se131133.html この辺りで。
補足
ご回答、どうもありがとうございます。 すみません、私の表現が悪くて伝わりませんでしたね。。 リネームしたいのではなくて、中身も含めて全て、●●.cgiに置き換えたいのです。(つまり上書きです。) vectorも色々みたのですが、この手の置き換え(上書き)ソフトがなさそうで。。(大体が、ファイル名フォルダ名のリネームか、ある文字列の置換…) 丸ごとファイルを上書きする(コピー)ニーズは少ないのですかね。。
お礼
お返事遅くなってしまって、大変申し訳ありませんでした。。 お教え下さり、ありがとうございます!! Winでシェルが使えると、今後も使えそうですね。ありがとうございました。