Ветеран
![Contributor](http://forum.oszone.net/images/groups/contributor.gif)
Сообщения: 2728
Благодарности: 1697
|
Профиль
|
Отправить PM
| Цитировать
UserName1989,
Вот вариант, который удалит кол-во файлов, кратное заданному числу, и оставляет кол-во файлов, менее этого числа, последние при сортировке по имени. Если кол-во файлов нацело делится на это число, удалятся все файлы
Код: ![Выделить весь код](images/misc/selectcode.png)
@Echo Off
cls
chcp 866 >nul
Set "BoxIn=Z:\Папка с файлами"
Set "Mask=*"
Set /A Diskret=5
Pushd "%BoxIn%" || (Echo "%BoxIn%" not found &Pause &Exit /B 1)
chcp 437 >nul
Set /A N=0
FOR /F "usebackq tokens=1,2 delims= " %%i IN (`2^>nul Dir /A:-D`) DO If /I "%%j"=="File(s)" Set /A N=%%i
chcp 866 >nul
Set /A N=%N% %% %Diskret%
If %N%==0 Del /Q "%BoxIn%\*.%Mask%" 2>nul &Exit /B
FOR /F "usebackq Skip=%N% delims=" %%i IN (`2^>nul Dir /B /A:-D /O:-N "%BoxIn%\*.%Mask%"`) DO Del "%%i"
Exit /B
Если всё же надо удалять с паузами, то вот вариант
Код: ![Выделить весь код](images/misc/selectcode.png)
@Echo Off
cls
chcp 866 >nul
Set "BoxIn=Z:\Папка с файлами"
Set "Mask=*"
Set /A Diskret=5
Set /A TPause=3
Pushd "%BoxIn%" || (Echo "%BoxIn%" not found &Pause &Exit /B 1)
chcp 437 >nul
:Begin
Set /A N=0
FOR /F "usebackq tokens=1,2 delims= " %%i IN (`2^>nul Dir /A:-D`) DO If /I "%%j"=="File(s)" Set /A N=%%i
Set /A N=%N%-%Diskret%
If Not %N% GTR 0 Exit /B
If %N% GTR 0 FOR /F "usebackq Skip=%N% delims=" %%i IN (`2^>nul Dir /B /A:-D /O:-N "%BoxIn%\*.%Mask%"`) DO Del "%%i"
TimeOut /T %TPause% /NOBREAK
GoTo :Begin
Exit /B
|
-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.
Последний раз редактировалось megaloman, 15-10-2018 в 00:43.
Отправлено: 23:41, 14-10-2018
| #7
|