• 締切済み

バッチファイル ファイル名の変更

お世話になります。 バッチファイル(*.bat)の開発をしています。 現在、 C:temp\20100101\xxx.data1.file.log.dat というパスがあるとして、ファイル名だけに対し、 .(ピリオド)をなくしたいと考えています。 つまり、上記のファイルを、 C:temp\20100101\xxxdata1filelogdat のように置き換えたいと思っています。 .(ピリオド)をブランクに置き換えると C:temp\20100101\xxx data1 file log dat のようになってしまうので、隙間ができないようにしたいです。 実装方法をご教授頂けますでしょうか。

みんなの回答

  • --HV--
  • ベストアンサー率25% (5/20)
回答No.3

testuser>set AAA=X.Y.Z testuser>echo %AAA% X.Y.Z testuser>echo %AAA:.=% XYZ こんな感じ。 環境変数の置換という形で考えたらわかりやすいのではないでしょうか。 置換前ファイル名を一時的に環境変数にセットし、 それを置換したファイル名を、上記手法で作ればよいかと。

curryteam
質問者

お礼

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

  • --HV--
  • ベストアンサー率25% (5/20)
回答No.2

文字列操作が大分楽なのでvbsを多用しちゃってますが、、。 実装手順としては、 (1) フルパスから、フォルダ名とファイル名に文字列を分割する   最後の「\」を探して、その前後を取りだすことになるのかな   または、「dir /b <fullpath>でファイル名だけをまず抽出 (2) 下記キーワードで検索すればいろいろ出てきますが、文字列の置換をする。「.」を「」に置換。 「コマンドプロンプト 文字置換」 (3) ren 「(1)で抽出したファイル名」 「(2)で置換したファイル名」 でリネーム これに、あるフォルダ内のデータを丸ごとループにかけたりすれば、きっとやりたいことができるんじゃないでしょうか。

curryteam
質問者

補足

お世話になります。 具体的には、 pushd C:\temp for /f "delims=" %%F in ('dir /s /b /a-d') do ( <文字列置換> ren [置換前][置換後] となると思いますが、 「.」を「」に置換、という箇所はどういう風に実装すればよいでしょうか?サンプルを検索しましたが、よく理解できませんでした。 すいませんが、よろしくお願いします。

回答No.1

回答では無いですが、少し複雑になる処理を行う場合はバッチファイルではなく、WHSを活用すると良いですよ。 WSHは言語として、VBScriptやJavaScriptが使われます。 メモ帳で書いてダブルクリックで実行できるので、バッチファイル感覚です。 私は最近、かなり多用しておりますが、質問の内容とかもっと複雑なこともたいていはできるので重宝します。 参考まで。。 http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html

curryteam
質問者

お礼

ご回答ありがとうございます。WSHですか、聞いたことはありますが、私はまだ使ったことはありません。本当はこういう仕掛けを作っていく方が理想なんでしょうね。 ただ今回は他のミドルウェアなどの兼ね合いもあるので、バッチファイルで作らざるを得ません。今後の参考にさせて頂こうと思います。

関連するQ&A