CMD/BAT - Определение файла с наибольшим числом в названии

Ответить
Аватара пользователя
Weidmann

CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Есть бэкапы файла в виде 001_f1.bak 002_f1.bak и т.д

Как определить имя текущего самого "старого" бэкапа? Необходимо переименовать его в f1
Аватара пользователя
Weidmann

Re: CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Примерно так:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (`2^>nul dir /b /a:-d /o:d /t:c "*_f1.bak"`) do if not defined sOldestFile set sOldestFile=%%~i
if defined sOldestFile (
	echo [%sOldestFile%]
	ren "%sOldestFile%" "f1"
) else (
	echo Nothing found.
)
endlocal
exit /b 0
Аватара пользователя
Weidmann

Re: CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Спасибо. А самый последний? И предпоследний, если не сложно
Аватара пользователя
Weidmann

Re: CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Цитата Weidmann:



А самый последний?
CMD/BAT - Определение файла с наибольшим числом в названии




Это как? Ранее было понятно:


Цитата Weidmann:



самого "старого"
CMD/BAT - Определение файла с наибольшим числом в названии




Что есть «последний»? Поясните.




Цитата Weidmann:



И предпоследний, если не сложно
CMD/BAT - Определение файла с наибольшим числом в названии




«Любовь моя! Мне надоел этот последний русский. И предпоследний тоже!» (с) Изображение.
Аватара пользователя
Weidmann

Re: CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Ваш вариант восстанавливает самый старый бэкап, с наименьшим номером. Я бы хотел иметь возможность восстанавливать с наибольшим, и, ели не сложно, с преднаибольшим
Аватара пользователя
Weidmann

Re: CMD/BAT - Определение файла с наибольшим числом в названии

Сообщение Weidmann »

Код:

Код: Выделить всё

:: Переименовываем файл с наибольшим номером:
@for /f "delims=" %%i in ('"2>nul dir /a-d/b/o-n "*_f1.bak""') do @ren "%%i" "f1"& exit /b



Код:

Код: Выделить всё

:: Переименовываем файл с предпоследним номером:
@for /f "delims=" %%i in ('"2>nul dir /a-d/b/o-n "*_f1.bak""') do @if defined x (ren "%%i" "f1"& exit /b) else (set x=*)
Ответить

Вернуться в «Скриптовые языки администрирования Windows»