Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


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

Профиль | Отправить 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
Критикую оба решения, это моё и Ваше: если среди файлов будет файл длиннее 2147483647 байт арифметика работать не будет. Что получится, лень думать. Попробуйте
Код: Выделить весь код
@Echo Off
cls
	Set /A Max=1000

	Set /A A=2147483647
	If %A% GEQ %Max% (Echo %A% ^>=  %Max%) Else (Echo %A% ^<  %Max%)
	
	Set /A A=2247483647
	If %A% GEQ %Max% (Echo %A% ^>=  %Max%) Else (Echo %A% ^<  %Max%)
pause
То есть файл длиной 2247483647 байт мы убъём без зазрения совести - у него отрицательная длина по цэмэдэшной арифметике. В первом коде я пытаюсь от этого застраховаться, поэтому накрутил всякого изврата.
Первый код, кстати, можно подсократить, но он тоже будет работать с длинами файла не более 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