- ベストアンサー
バッチを使って画像名『+』『.』『_』を削除したい
バッチを使って、画像名の『+』、『.』、『_』を削除するというバッチを作りたいです。 実行はできたのですが、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
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
結果だけ先に言いますと、バッチファイルでは無理です。 簡単に言いますと・・・・ ファイル名が hogehoge.@hogehoge.jpg と有った場合に、最初に有る(今回は、.@の「.」)を無くしたいって事ですよね? これは、バッチファイル自体、判定が出来ないので実行してしてしまうと hogehoge@hogehogejpg になり、処理後に「.」を追加する処理が必要になってきます。 リネーム後のファイル名後ろ3文字が「jpg」であれば「.jpg」を追加する工程を踏めば可能かとは思いますが。
その他の回答 (3)
- heisukewada
- ベストアンサー率58% (93/160)
@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)
ファイル名が 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)
『.jpg』を固定なら ren "%%f" "!filename!.jpeg" じゃないですか ? しらんけど .....
補足
それは考えていなかったです。