Не работает команда set /a
здравствуйте, прошу Вас помочь в решении одной задачи.
в определенном каталоге находятся архивы, которые именуются по дате их создания, пример названия таких файлов: 2011.06.05-12.00.00.7z 2011.06.06-12.00.00.7z 2011.06.07-12.00.00.7z 2011.06.08-12.00.00.7z требуется хранить в каталоге ТОЛЬКО три последних (по дате их создания) архива - а остальные удалить (т.е. удалим файл - 2011.06.05-12.00.00.7z - т.к. он самый поздний ) мое решение - скрипт следующего содержания: =================================== set S=3 for /F "Delims=" %%i in ('dir /B /O:N *.7z') do ( set /a S-=1 if /I S LEQ 0 DEL %%i ) =================================== скрипт отрабатывается, ошибок не выдает, но команда set /a S-=1 не выполняется - не выполнение заключается в том что значение S не уменьшается на 1 если написать в скрипте =================================== set S=3 set /a S-=1 echo %S% =================================== то функция работает. Получается что функция set с параметром /a не работает в составе цикла for если нет решения этой задачи, то как ее решить??? |
есть такое:
оставить три последних по дате файла и удалить остальное Код:
for /f "skip=3 delims=" %%a in ('dir/b/a-d/o-d *.7z') do del "%%a" |
Цитата:
Код:
SetLocal EnableDelayedExpansion |
остаются только 2 файла
|
ferget
изменил команду на: for /f "skip=3 delims=" %%a in ('dir /b /o:n *.7z') do del "%%a" результат: удалил оставил только три последних файла и удалил остальные amel27 вы все правильно написали, надо только изменить оператор сравнения в команде IF на LSS если нет возражений то отмечу - решение данной темы найдено. |
Здравствуйте. Возникла такая же проблема, как и у автора темы. Есть скрипт для экспорта веток реестра из списка:
Так вот, в цикле переменная num остается без изменений, однако вне цикла она принимает итоговое значение, которое и должно быть (если в списке например 65 строк, то результатом будет 166) |
Цитата:
|
Код:
@echo off |
Время: 05:53. |
Время: 05:53.
© OSzone.net 2001-