|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удалить лишние файлы |
|
CMD/BAT - [решено] Удалить лишние файлы
|
Пользователь Сообщения: 87 |
Профиль | Отправить PM | Цитировать Здравствуйте, нужна помощь в решении следующей задачи.
Есть папка .\temp в которой лежат 300 файлов. Часть файлов больше 1 мегабайта часть файлов менее 100 килобайт. Нужно удалить (delete) все файлы которые менее 100 килобайт. Подскажите пожалуйста каким способом лучше всего решить задачу. |
|
Отправлено: 16:30, 02-06-2019 |
Crazy Сообщения: 1199
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 17:49, 02-06-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
Выспавшись, на свежую голову написал на смд. Кстати подскажите пожалуйста на будущее как в вашем примере искать рекурсивно. То есть если в папке .\temp\ лежат папки с файлами. |
|
Отправлено: 19:04, 04-06-2019 | #3 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Patroklos,
@Echo Off Set "BoxIn=z:\Box_In" Set /A SS=102400 ||Exit /b 2 Set /A N=-1 :Begin Set /A N+=1 Call Set "SSS=%%SS:~%N%,1%%" If Not "%SSS%"=="" GoTo :Begin If %N% GTR 9 Echo %SS% too large &Exit /b 2 Set /A N+=1 FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\*.*" /S /B /A:-D`) DO Call :DelSize "%%i" %%~zi %SS% %N% Exit /B :DelSize Set "SSS=%2" Call Set "SSS=%%SSS:~%4,1%%" If Not "%SSS%"=="" Exit /B If %2 GTR %3 Exit /B Del %1 Exit /B |
------- Последний раз редактировалось megaloman, 04-06-2019 в 23:38. Отправлено: 21:18, 04-06-2019 | #4 |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать megaloman, обожаю читать ваш код. Каждый раз маленький шедевр. Многому учусь.
Мой код намного проще. Видимо не все нюансы учёл. Вот что у меня получилось. setlocal enabledelayedexpansion set SizeToTerminate=1000 FOR %%A IN (".\files\*.txt") DO ( set size=%%~zA call :Terminator !size! ) pause>nul :Terminator if %~1 lss %SizeToTerminate% ( echo File size Less From %SizeToTerminate% and Equal %~1 ) else ( echo File size Greater From %SizeToTerminate% and Equal %~1 ) goto :eof |
|
Отправлено: 21:34, 04-06-2019 | #5 |
Crazy Сообщения: 1199
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 22:09, 04-06-2019 | #6 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Цитата Patroklos:
Кто умеет/хочет делать - делает, кто не умеет/не хочет - критикует. Если хотите намного проще, натека:
@Echo Off Set "BoxIn=z:\Box_In" Set /A SS=44000 ||Exit /b 2 FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\*.*" /S /B /A:-D`) DO ( If %%~zi LEQ %SS% Del "%%i" ) Exit /B Первый код, кстати, можно подсократить, но он тоже будет работать с длинами файла не более 9 знаков:
@Echo Off Set "BoxIn=z:\Box_In" Set /A SS=102400 ||Exit /B 2 If Not "%SS:~9,1%"=="" (Echo %SS% too large &Exit /B 1) FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%BoxIn%\*.*" /S /B /A:-D`) DO ( Call :DelSize "%%i" %%~zi %SS% 9 ) Exit /B :DelSize Set "SSS=%2" Call Set "SSS=%%SSS:~%4,1%%" If Not "%SSS%"=="" Exit /B If %2 GTR %3 Exit /B Del %1 Exit /B |
|
------- Последний раз редактировалось megaloman, 05-06-2019 в 00:03. Отправлено: 22:14, 04-06-2019 | #7 |
Ветеран Сообщения: 545
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Patroklos:
|
|
------- Отправлено: 09:38, 05-06-2019 | #8 |
Старожил Сообщения: 427
|
Профиль | Отправить PM | Цитировать можно одной строкой сделать
FORFILES /P %temp% /S /M * /C "cmd /c if @fsize GTR 100000 echo @path размер файла @fsize" можно еще добавить /D -30 чтобы удалял только файлы старше 30 дней. |
Отправлено: 11:50, 11-06-2019 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Удалить лишние строки из txt | aos | Скриптовые языки администрирования Windows | 25 | 10-07-2012 17:08 | |
удалить лишние файлы | binders | Вебмастеру | 3 | 29-09-2011 17:50 | |
Интернет - [решено] Как удалить или скрыть лишние компьютеры в Сети? | VeRtex-2010 | Microsoft Windows 7 | 10 | 09-04-2011 23:53 | |
7 / 2008 R2 - [решено] Как удалить лишние дистрибутивы Win7 | rushen | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 19 | 01-11-2010 22:08 | |
Разное - [решено] Как удалить лишние виртуальные приводы? | juliahka | Хочу все знать | 5 | 15-07-2010 06:49 |
|