Windowsコマンド

Windowsコマンド

ファイル名の最後のアンダースコアを見つけて、それに続くすべて(最後のアンダースコアを含む)を削除する必要があります。

例: ファイル名:

abc_erf_dsgd_fd12458.txt

期待される結果:

abc_erf_dsgd.txt

注: ファイル名に表示されるアンダースコアの数は動的であり、固定ではありません。

ファイルによっては、アンダースコアが 2 つしかないものもあれば、最大 6 つあるものもあります。
ここでの目的は、最後のアンダースコアを見つけて、それに続くものをすべて省略することです。

できれば、PowerShell コマンドではなく、目的を達成できる Windows バッチ スクリプトを使用してください。

答え1

@Echo off
set file=abc_erf_dsgd_fd12458.txt
for %%A in (%file%) do set Ext=%%~xA
set remove=%file%
:loop
if "%remove%" neq "%remove:*_=%" Set "remove=%remove:*_=%"&goto :loop
call set filenew=%%file:_%remove%=%%%Ext%"
set file

サンプル出力:

> SU_1220967.cmd
file=abc_erf_dsgd_fd12458.txt
filenew=abc_erf_dsgd.txt"

バッチ

  • まず拡張子をvarに取得しますExt
  • remove次に、文字列置換を使用してループ内でアンダースコアまでのすべてのテキストを削除した後、ファイル名の残りの部分を含む変数を作成します。
  • removeを何も入れずに拡張子を再適用することで新しいファイル名を作成します。

関連情報