Эта операция переименования может быть сделано, например, с:
@echo off
for /F "tokens=1-3* delims=_" %%A in ('dir /A-D /B test_MX_*.txt') do (
ren "%%A_%%B_%%C_%%D" "%%A_%%B_%%C.txt"
)
Каждое имя файла разделяется на 4 строки, назначенных переменных цикла к D с использованием подчеркивания в качестве разделителя. Переменная цикла D берет все имя файла после третьего подчеркивания.
Или также работает на 3-х файлов:
@echo off
setlocal EnableDelayedExpansion
for /F "delims=" %%F in ('dir /A-D /B test_MX_*.txt') do (
set "ActFileName=%%~nF"
set "NewFileName=!ActFileName:~0,-9!"
ren "%%~F" "!NewFileName!.txt"
)
endlocal
Это решение присваивает имя файла без расширения файла и путь к переменной окружения ActFileName
. Затем новая переменная среды с именем NewFileName
определяется с именем активного файла без последних 9 символов (символ подчеркивания и даты). Это измененное имя файла используется далее в операции переименования.
Другие решения с использованием команд для, установить и Ren можно найти на переполнение стека.
Поиск со строкой
[batch-file] for set rename files
и более 600 результатов представлены все с помощью более или менее что-то вроде выше.
Для получения дополнительной информации об используемых командах откройте окно командной строки, выполните одно за другим следующие команды и прочитайте справку о выходе.
dir /?
for /?
ren /?
set /?
с командой жэнь мне нужно сделать это один раз для каждого файла. Ниже я могу это сделать, но это ограничивает первую строку. для/F "tokens = 1 delims = _" %% i in ("%% ~ na") do ( move/Y %% ~ fa% data_in% \ %% i %% ~ xa> nul ) – user3123752
Спасибо Mofi за ваши комментарии. Я добавил больше подробностей в мой вопрос. – user3123752