1

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

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

abc_erf_dsgd_fd12458.txt

ожидаемый результат:

abc_erf_dsgd.txt

Примечание. Символ подчеркивания no: в имени файла является динамическим и не имеет фиксированной природы.

Некоторые файлы могут иметь только 2 подчеркивания, в то время как другие могут иметь до 6.
Намерение здесь состоит в том, чтобы найти последнее подчеркивание и опустить все, что следует за ним.

Предпочтительно пакетный скрипт windows, который может выполнять свои задачи, а не команды powershell.

1 ответ1

0
@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 ничем и повторно применяя расширение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .