Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Найти наибольшее значение файла

Ответить
Настройки темы
CMD/BAT - [решено] Найти наибольшее значение файла

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: crazydog
Дата: 25-09-2019
Доброго времени суток.
Ситуация такая - в папке с программой находится несколько exe файлов stxxxxxx.exe (xxxxxx - числовое значение, например 123456, 234567)
Задача - необходимо удалить все неактуальные версии файлов (самое большое число - актуальный файл).
Например:
st111111.exe - удалить старый файл
st121456.exe - оставить

Пока написал код, но из него можно только получить имена файлов.
Код: Выделить весь код
setlocal ENABLEDELAYEDEXPANSION
for %%i in (*.exe) do (
    set FILENAME=%%i
    set NUMBER=!FILENAME:~-10,-4!
    echo !NUMBER!
)

Отправлено: 21:25, 25-09-2019

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Попробуйте так:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sMask=st[0-9][0-9][0-9][0-9][0-9][0-9]\.exe

for /f "usebackq skip=1 delims=" %%i in (
	`2^>nul dir /b /a:-d /o:-n "st*.exe" ^| findstr.exe /i /r /c:"%sMask%"`
) do echo del /f /q "%%~i"

endlocal
exit /b 0

Для реального удаления уберите echo. Рассчитано строго на шесть цифр в номере.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:18, 25-09-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Силами cmd (st*******.exe файлы находятся в папке с командным сценарием):
Код: Выделить весь код
@echo off
  setlocal enabledelayedexpansion
    for /f %%i in ('dir /b st*.exe') do (
      set "x=%%~ni"
      if not defined n (
        set "n=!x:st=!"
      ) else (
        set "x=!x:st=!"
        if !n! lss !x! set "n=!x!"
      )
    )
    for /f %%i in (
      'dir /b st*.exe ^| findstr /vrc:"st!n!.exe"'
    ) do del /f/q %%i
  endlocal
exit /b
Силами pwsh:
Код: Выделить весь код
(ls st*.exe | sort {[Int32]($_.BaseName -replace 'st')} -Descending)[1..-1].ForEach{ri $_}
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:21, 25-09-2019 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Powershell:
Код: Выделить весь код
dir st*.exe |sort name |select -SkipLast 1 |Remove-Item -Force -Confirm:$false

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 09:47, 26-09-2019 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Найти наибольшее значение файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Необходимо заменять известную часть файла на значение переменной Ingvar2 Скриптовые языки администрирования Windows 2 06-08-2015 11:43
MySQL - Найти ближайшее значение stihmih Программирование и базы данных 2 26-08-2012 17:51
CMD/BAT - Как найти часть записи в реестре и запустить её значение с помощью BAT Valek271183 Скриптовые языки администрирования Windows 12 26-07-2012 18:02
2010 - [решено] Найти сопадающие значение в таблицах excel YulZo Microsoft Office (Word, Excel, Outlook и т.д.) 3 28-05-2012 09:30
CMD/BAT - [решено] Взять значение из свойства файла sov44 Скриптовые языки администрирования Windows 11 18-01-2012 16:13




 
Переход