重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

お世話になります。
バッチファイル(*.bat)の開発をしています。

現在、
C:temp\20100101\xxx.data1.file.log.dat
というパスがあるとして、ファイル名だけに対し、
.(ピリオド)をなくしたいと考えています。

つまり、上記のファイルを、

C:temp\20100101\xxxdata1filelogdat
のように置き換えたいと思っています。

.(ピリオド)をブランクに置き換えると
C:temp\20100101\xxx data1 file log dat
のようになってしまうので、隙間ができないようにしたいです。

実装方法をご教授頂けますでしょうか。

A 回答 (3件)

testuser>set AAA=X.Y.Z


testuser>echo %AAA%
X.Y.Z
testuser>echo %AAA:.=%
XYZ

こんな感じ。
環境変数の置換という形で考えたらわかりやすいのではないでしょうか。

置換前ファイル名を一時的に環境変数にセットし、
それを置換したファイル名を、上記手法で作ればよいかと。
    • good
    • 0
この回答へのお礼

わかりました。
ありがとうございます。

お礼日時:2010/02/05 07:52

文字列操作が大分楽なのでvbsを多用しちゃってますが、、。



実装手順としては、
(1) フルパスから、フォルダ名とファイル名に文字列を分割する
  最後の「\」を探して、その前後を取りだすことになるのかな
  または、「dir /b <fullpath>でファイル名だけをまず抽出

(2) 下記キーワードで検索すればいろいろ出てきますが、文字列の置換をする。「.」を「」に置換。
「コマンドプロンプト 文字置換」

(3) ren 「(1)で抽出したファイル名」 「(2)で置換したファイル名」
でリネーム

これに、あるフォルダ内のデータを丸ごとループにかけたりすれば、きっとやりたいことができるんじゃないでしょうか。

この回答への補足

お世話になります。

具体的には、
pushd C:\temp
for /f "delims=" %%F in ('dir /s /b /a-d') do (

<文字列置換>

ren [置換前][置換後]

となると思いますが、
「.」を「」に置換、という箇所はどういう風に実装すればよいでしょうか?サンプルを検索しましたが、よく理解できませんでした。

すいませんが、よろしくお願いします。

補足日時:2010/01/30 12:32
    • good
    • 0

回答では無いですが、少し複雑になる処理を行う場合はバッチファイルではなく、WHSを活用すると良いですよ。


WSHは言語として、VBScriptやJavaScriptが使われます。
メモ帳で書いてダブルクリックで実行できるので、バッチファイル感覚です。
私は最近、かなり多用しておりますが、質問の内容とかもっと複雑なこともたいていはできるので重宝します。

参考まで。。
http://www.atmarkit.co.jp/fwin2k/operation/wsh01 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。WSHですか、聞いたことはありますが、私はまだ使ったことはありません。本当はこういう仕掛けを作っていく方が理想なんでしょうね。

ただ今回は他のミドルウェアなどの兼ね合いもあるので、バッチファイルで作らざるを得ません。今後の参考にさせて頂こうと思います。

お礼日時:2010/01/29 23:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!