|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скрипт для проверки файлов по размеру и по времени |
|
CMD/BAT - [решено] Скрипт для проверки файлов по размеру и по времени
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Добрый день, совсем не разбираюсь в написании скриптов, по этому прошу помощи
Как реализовать процесс проверки фалов по размеру. Если размер файла составляет меньше 500mb, после окончания проверки выводить сообщение с цифрой 0 если больше то с 1 и так же со временем, если время изменения файла больше 24 часов то выводить сообщение 0, если меньше то 1 Заранее спасибо за ответы, буду очень благодарен если напишите пояснение. Хочу разобраться в этой теме. |
|
Отправлено: 12:17, 22-04-2021 |
fascinating rhythm Сообщения: 6616
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 12:52, 22-04-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать DJ Mogarych,
Спасибо, а подскажите, реально это сделать средствами cmd ? |
Отправлено: 13:01, 22-04-2021 | #3 |
fascinating rhythm Сообщения: 6616
|
Профиль | Отправить PM | Цитировать Наверняка, я просто не владею cmd за ненадобностью.
Может, коллеги подскажут. |
------- Отправлено: 13:06, 22-04-2021 | #4 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Цитата NickTeilor:
@Echo Off cls Set "FileIn=Z:\Box_In\1 Высокий блондин в черном ботинке (1972).mp4" Set /A mSize=500*1024*1024 Call :fSize %mSize% "%FileIn%" "Index" Echo %Index% pause Exit /B :fSize SetLocal Set /A i=2 If Exist %2 Pushd "%~dp2" && ( Set /A i=1 For /f "usebackq delims=" %%f In (`2^>nul Dir /B /A:-D "%~2"`) Do If %%~zf LSS %1 Set /A i=0 Popd ) EndLocal &Set /A %~3=%i% Exit /B |
||
------- Отправлено: 16:37, 22-04-2021 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать @echo off set "pDir=C:\Папка" set "file=Файл.ext" call :# "%file%" pause& exit :# Pushd "%pDir%" set /a Szmb=%~z1/1024 if %Szmb% lss 500 (echo 0) else (echo 1) 2>nul forfiles /M "%~nx1" /D -1 && (echo 0) || (echo 1) Popd exit /b Цитата NickTeilor:
|
|
Отправлено: 16:49, 22-04-2021 | #6 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Спасибо Alpap, я перемудрил, в моём варианте можно обойтись без For и, кроме того, без Push (файлы не более 2'147'483'647 байт
@Echo Off cls Set "FileIn=Z:\Box_In\1 Высокий блондин в черном ботинке (1972).mp4" Set /A mSize=500*1024*1024 Call :fSize %mSize% "%FileIn%" "Index" Echo %Index% pause Exit /B :fSize If Not Exist %2 (Set /A %~3=2 &Exit /B 2) SetLocal If %~z2 LSS %1 (Set /A i=0) Else (Set /A i=1) EndLocal &Set /A %~3=%i% Exit /B Слегка усложнить код, файлы могут быть в 1 000 000 раз больше
@Echo Off cls Set "FileIn=Z:\Box_In\1 Высокий блондин в черном ботинке (1972).mp4" Set /A mSize=500*1024*1024 Call :fSize %mSize% "%FileIn%" "Index" Echo %Index% pause Exit /B :fSize If Not Exist %2 (Set /A %~3=2 &Exit /B 2) SetLocal Set "A2=%~z2" Call Set "A2=%%A2:~0,-6%%" Set /A A1=%1 Set "A1=%A1:~0,-6%" If "%A1%"=="" Set /A A1=0 If "%A2%"=="" Set /A A2=0 Set /A i=1 IF Not "%A2%"=="0" If %A2% LSS %A1% Set /A i=0 EndLocal &Set /A %~3=%i% Exit /B |
|
------- Последний раз редактировалось megaloman, 22-04-2021 в 18:13. Отправлено: 17:14, 22-04-2021 | #7 |
Ветеран Сообщения: 2726
|
Профиль | Отправить PM | Цитировать Как вариант (если CMD принципиален и Powershell никак не применять), можно сделать CMD со встроенным JS
@set @E=1; /* @Echo Off cls Set "FileIn=Z:\Box_In\1 Высокий блондин в черном ботинке (1972).mp4" Set /A dtFile=24*60*60 Set /A dsFile=500*1024*1024 For /f "usebackq tokens=1,2 delims= " %%a In (`Cscript //NoLogo /E:jscript "%~dpnx0" "%FileIn:\=\\%" %dsFile% %dtFile%`) Do ( Set /A lSize=%%a Set /A lTime=%%b ) Echo "%lSize%" "%lTime%" pause GoTo :Eof */ var oArg = WScript.Arguments; var FSO = WScript.CreateObject("Scripting.FileSystemObject"); var now = new Date(); var gFile = FSO.GetFile(oArg(0)); // WScript.Echo(gFile.Size + " < " + oArg(1)); var lSize; if (gFile.Size < oArg(1)) lSize = 0; else lSize = 1; // WScript.Echo(now.getTime()/1000 - gFile.DateLastModified/1000 + " < " + oArg(2)); var lTime; if (now.getTime()/1000 - gFile.DateLastModified/1000 < oArg(2)) lTime = 0; else lTime = 1; WScript.Echo(lSize, lTime); |
------- Последний раз редактировалось megaloman, 22-04-2021 в 23:18. Отправлено: 23:12, 22-04-2021 | #8 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Огромное вам спасибо, пойду разбирать по полочкам и переваривать информацию )
|
Отправлено: 05:11, 23-04-2021 | #9 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Система - [решено] Ищу прогу для удаления одинаковых файлов по размеру | klesk | Программное обеспечение Windows | 4 | 13-09-2017 11:26 | |
VBS/WSH/JS - VBS скрипт для открытия/закрытия cd dvd привода по времени | malder72 | Скриптовые языки администрирования Windows | 13 | 01-03-2017 07:49 | |
VBS/WSH/JS - [решено] Удаление файлов по маске/размеру/времени изменения | nineline | Скриптовые языки администрирования Windows | 6 | 28-05-2015 08:36 | |
Любой язык - Скрипт для распределения файлов по папкам кучками по n-ому размеру | DmitryAnatolich | Скриптовые языки администрирования Windows | 9 | 06-05-2013 15:20 | |
CMD/BAT - Не срабатывает скрипт переноса файлов по размеру - !!! с условием переименования !!! | dark-------13 | Скриптовые языки администрирования Windows | 0 | 19-03-2012 15:27 |
|