Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Определение файла с наибольшим числом в названии (http://forum.oszone.net/showthread.php?t=293466)

Weidmann 04-01-2015 15:41 2451779

Определение файла с наибольшим числом в названии
 
Есть бэкапы файла в виде 001_f1.bak 002_f1.bak и т.д
Как определить имя текущего самого "старого" бэкапа? Необходимо переименовать его в f1

Iska 04-01-2015 16:54 2451823

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

@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 04-01-2015 17:08 2451831

Спасибо. А самый последний? И предпоследний, если не сложно

Iska 04-01-2015 17:15 2451838

Цитата:

Цитата Weidmann
А самый последний? »

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

Цитата Weidmann
самого "старого" »

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

Цитата:

Цитата Weidmann
И предпоследний, если не сложно »

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

Weidmann 04-01-2015 17:25 2451847

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

Georgio 04-01-2015 19:19 2451906

Код:

:: Переименовываем файл с наибольшим номером:
@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=*)



Время: 00:31.

Время: 00:31.
© OSzone.net 2001-