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

ファイル名の一部をbatで変更したい

batファイルを使って、以下のようにファイル名の一部を変更したいです。
例)
変更前
01_レポート_世界史_~.txt


変更後
01_レポート_物理_~.txt

試しに
ren 01_レポート_世界史_*.txt 01_レポート_物理_*.txt
と入れたところ、

01_レポート_物理史_~.txt

となってしまいます。
上記はあくまで例ですが、対象が多くてとても手作業では変えれません。
よろしくお願いします。

質問者からの補足コメント

  • batファイルにこだわりはなく、PowerShell等他の方法で可能だったら教えて頂きたいです。

      補足日時:2023/02/21 20:49

A 回答 (3件)

BATスクリプトを書く力が無くても、エディターを使いこなせていれば、


dir /b 01_レポート_世界史_*.txt > foo.bat
で、

01_レポート_世界史_aaa.txt
・・・・(以下同様)

ファイル名の並んだファイルを作って、あとはエディターの操作でfoo.batを、

ren 01_レポート_世界史_aaa.txt 01_レポート_物理_aaa.txt
・・・・(以下同様)

という風に編集して、実行するという手もあります。エディター使いこなせていなくてもExcelが使いこなせていればなんとかなるでしょう。

バッチでやるとするとこんな感じで。

for %%A in (01_レポート_世界史_*.txt) do call :ren "%%A"
exit /b

:ren
set "A=%~1"
ren "%A%" "%A:世界史=物理%"
exit /b
    • good
    • 2
この回答へのお礼

回答ありがとうございます!
回答いただいたfor文から色々調べて試したら解決出来ました!
一番知りたかった情報に近かったのでベストアンサーとさせていただきます!
〈参考〉
https://qiita.com/kaorikatakura/items/69d50a920c …

お礼日時:2023/02/22 17:31

変更のパターンをみると


変更前の文字+任意の文字.txt を
+任意の文字.txt を
変更後の文字+任意の文字.txt に変えるパターンです。

変更前の文字は01_レポート_世界史_
変更後の文字は01_レポート_物理_

「上記はあくまで例ですが、対象が多くてとても手作業では変えれません。」
ということですが、変更前後の文字の種類が多いだけで、
パターンは上記のパターンだけでしょうか。

それとも
任意の文字+変更前の文字.txt を
任意の文字+変更後の文字.txt に変えるパターンなどもあるのでしょうか。

もし、あるなら、全てのパターンを提示してください。
BAT等のスクリプトは、各パターンごとに、処理を記述しないと対応できません。
    • good
    • 1
この回答へのお礼

回答ありがとうございます!
色々調べて試してみたら解決出来ました!

お礼日時:2023/02/22 17:33

文字数が違うのが原因、と分かる筈。

    • good
    • 0
この回答へのお礼

回答ありがとうございます。
仰る通り文字数が原因なのは気づいていますが、その対処法を質問しています。

お礼日時:2023/02/21 20:23

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