プロが教えるわが家の防犯対策術!

指定ディレクトリ内に色々な拡張子のファイルが入っています。
その中で、指定拡張子のファイル名の一部(固定文字列)を一括削除するバッチファイルを作成したいのですが、どうすればよいでしょうか?

具体的には、下記で、XMLファイルのファイル名のM01だけを一括削除したいです。


OS
・Windows10

対象ディレクトリ
・L:\hoge/

格納されているファイル例
・C0001.MP4
・C0001M01.XML
・C0002.MP4
・C0002M01.XML

対象拡張子
・.XML

削除したい固定文字列(ファイル名の一部)
・M01

期待している結果(格納されているファイル名)
・C0001.MP4
・C0001.XML
・C0002.MP4
・C0002.XML

A 回答 (4件)

こういうのはバッチではなくてPowershellの方が楽ですよ


Powershellのコンソールを開いて、以下を実行です。

cd L:
cd \hoge
dir *.xml | Rename-Item -NewName {$_.Name -replace 'M01', ''}

ご参考まで
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
期待した通り動作しました。

お礼日時:2019/11/25 09:21

どの様なソフトを使っても削除してはダメです。


拡張子でソフトに紐付けされています。
友人にメールで送るのでしたら、メールを二度に分けて、「*.XML」を削除しているからと連絡をしてください。
削除する事で、ある意味暗号化された様になります。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2019/11/25 09:14

「ファイルを削除」するのではなく、


「ファイル名を変更」したいということですね。

RENコマンドを使います。
まずは ”/?” だけを付けて実行し使い方を表示させて確認してください。

・・・
C:\Users\【ユーザー名】>ren /?
ファイル (複数可) の名前を変更します。

RENAME [ドライブ:][パス]ファイル名1 ファイル名2
REN [ドライブ:][パス]ファイル名1 ファイル名2

ファイル名2 には新しいドライブもパスも指定できないので注意してください。
・・・

そしてワイルドカード文字を使います。
ただしこの場合は ”*”(アスタリスク)ではなく ”?”(クエスチョンマーク)を使います。
ワイルドカードに指定する文字数を指定しないと使えないのです。

 >ren text01.txt text.txt
のように、一部の文字を指定して変更したいときには
 >ren *01.* *.*
としてはダメなんです。
ファイル名は変更されません。(なんとなくダメなのは分かりますよね…変更後のファイル名に ”*.*” って...)
文字数を一致させて
 >ren ????01.??? ????.???
とする必要があります。

…ということで、もうわかりますね。
頑張ってください。


・・・余談・・・

特に意味がない限り小文字で記述したほうが良いでしょう。
コマンドプロンプトでは基本的に大文字も小文字も同じものとして扱われます。
数字の ”1” とアルファベットの ”l” の違いに気を付けるくらいで、他は滅多に間違えることがありません。
大文字を含むと ”2” ”Z" ”O” ”0” ”5” S” ”13” ”B” など紛らわしい文字が増えます。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2019/11/25 09:14

https://jak-san.hatenablog.com/entry/20090402/12 …
試していませんけど参考までに

行の抽出などはバッチ書きますけど。
リネームだけならわたくしは昔からコレです。
https://www.vector.co.jp/soft/win95/util/se07442 …
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2019/11/25 09:14

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

このQ&Aを見た人はこんなQ&Aも見ています