
Необходимо найти последнее подчеркивание в имени файла и удалить все, что следует за ним (включая последнее подчеркивание).
например, имя файла:
abc_erf_dsgd_fd12458.txt
ожидаемый результат:
abc_erf_dsgd.txt
Примечание: Количество подчеркиваний в имени файла является динамическим и не является фиксированным.
В некоторых файлах может быть только 2 подчеркивания, тогда как в других их может быть до 6.
Целью здесь является поиск последнего подчеркивания и исключение всего, что следует за ним.
Предпочтительно использовать пакетный скрипт Windows, который может это сделать, а не команды PowerShell.
решение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
ничем и повторно применяя расширение