
ファイル名の最後のアンダースコアを見つけて、それに続くすべて(最後のアンダースコアを含む)を削除する必要があります。
例: ファイル名:
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
を何も入れずに拡張子を再適用することで新しいファイル名を作成します。