Команда Windows

Команда Windows

Необходимо найти последнее подчеркивание в имени файла и удалить все, что следует за ним (включая последнее подчеркивание).

например, имя файла:

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"

Партия

  • сначала получает расширение в varExt
  • затем создает переменную, removeсодержащую оставшуюся часть имени файла после удаления всего текста до подчеркивания включительно в цикле с использованием подстановки строк.
  • создает новое имя файла, заменяя его removeничем и повторно применяя расширение

Связанный контент