• ベストアンサー

バッチを使って画像名『+』『.』『_』を削除したい

バッチを使って、画像名の『+』、『.』、『_』を削除するというバッチを作りたいです。 実行はできたのですが、JPGの画像が、見れなくなってしまいました。 多分、画像の拡張子が潰れてしまったのだと思います。 下4桁『.jpg』を保持したまま、作りたいです。 どこが悪いのか、教えていただけますでしょうか。 @echo off setlocal enabledelayedexpansion set "source_folder=C:\path\to\your\images" for %%f in (%source_folder%\*) do ( set "filename=%%~nxf" set "filename=!filename:+=!" set "filename=!filename:.=!" set "filename=!filename:_=!" ren "%%f" "!filename!" ) echo Done! pause

質問者が選んだベストアンサー

  • ベストアンサー
  • JP002086
  • ベストアンサー率34% (1535/4403)
回答No.3

結果だけ先に言いますと、バッチファイルでは無理です。 簡単に言いますと・・・・ ファイル名が hogehoge.@hogehoge.jpg と有った場合に、最初に有る(今回は、.@の「.」)を無くしたいって事ですよね? これは、バッチファイル自体、判定が出来ないので実行してしてしまうと hogehoge@hogehogejpg になり、処理後に「.」を追加する処理が必要になってきます。 リネーム後のファイル名後ろ3文字が「jpg」であれば「.jpg」を追加する工程を踏めば可能かとは思いますが。

s52i4z9
質問者

補足

それは考えていなかったです。

その他の回答 (3)

回答No.4

@echo off setlocal enabledelayedexpansion rem 対象フォルダのパスを設定します set "source_folder=C:\path\to\your\images" rem フォルダ内のファイルを順に処理します for %%f in (%source_folder%\*) do ( rem ファイル名と拡張子を取得します set "fullname=%%~nF" set "extension=%%~xF" rem ファイル名から _ + . を取り除いて新しいファイル名を生成します set "new_filename=!fullname:_=!" set "new_filename=!new_filename:+=!" set "new_filename=!new_filename:.=!" rem 拡張子を含めずにファイルをリネームします ren "%%F" "!new_filename!!extension!" ) echo 完了しました。 pause

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

ファイル名が abc.jpg の場合、 %%~nxf の ~nf が abc で、~xf が .jpg で(含むピリオド)、~nxf が abc.jpg です。( f は %%f のf ) forの中で、 echo ~nxf : %%~nxf echo ~nf : %%~nf echo ~xf : %%~xf してみてください。 なので、~n だけ使えば良いです。~x は最後に付ける。 set "filename=%%~nf" set "filename=!filename:+=!" set "filename=!filename:.=!" set "filename=!filename:_=!" ren "%%f" "!filename!%%~xf"

  • NuboChan
  • ベストアンサー率47% (785/1650)
回答No.1

『.jpg』を固定なら ren "%%f" "!filename!.jpeg" じゃないですか ? しらんけど .....

関連するQ&A