Форум программистов, компьютерный форум, киберфорум
Наши страницы

Batch (CMD/BAT)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.75
DeeMass
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 10
#1

Мониторинг файлов по дате создания и расширению - CMD/BAT

21.05.2012, 10:47. Просмотров 3563. Ответов 5
Метки нет (Все метки)

Здравствуйте, есть задача мониторить папку на предмет наличия файлов с расширениями, допустим .txt, .doc, .jpg которые залежались дольше 5 минут (т.е. дата их создания 5 минут назад и больше) Заранее благодарен
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2012, 10:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Мониторинг файлов по дате создания и расширению (CMD/BAT):

Копирование файлов по дате создания - CMD/BAT
Здравствуйте, Уважаемые. Требуется Ваша помощь, если есть желание и время на это :) В батниках полный профан. Задача в следующем: есть на...

Поиск файлов по дате создания - CMD/BAT
Здравствуйте. Есть вот такое задание Вывод на экран списка файлов, хранящихся в указанном первым параметром каталоге и созданных в первом...

Удаление файлов по маске по дате создания - CMD/BAT
Прошу помоч создать бат-файл удаление файлов по маске по дате создания. файлы могут находиться на разных дисках.. Заранее мерси

Перемещение файлов по папкам по дате создания - CMD/BAT
Всем привет. Нужна помошь. Есть папка где более 1000 файлов. Задача в том что нужно создавать папки по дате создания файлов и...

Премещение файлов в каталоги с сортировкой по дате создания - CMD/BAT
Дано: Каталог с любым количеством файлов. Задача: Создать каталоги соответствующие дате создания каждого отдельно взятого файла,...

Поиск на диске файлов по дате создания, введённой с клавиатуры - CMD/BAT
Здравствуйте, подскажите пожалуйста. Как создать бат файл который бы искал в диске С файлы по дате, которую я введу с клавиатуры ...

5
CyberMuesli
3 / 3 / 1
Регистрация: 19.05.2012
Сообщений: 13
28.05.2012, 01:05 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Курсовая? :-)
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
@echo off
 
rem %1=path 
 
:start
setlocal enabledelayedexpansion
if not %errorlevel%==0 (
   echo ERROR: setlocal enabledelayedexpansion
   exit /b 1
)
 
set /a MaxSecAgo=5*60
 
for %%i in (%1) do (
    call :GetFileInfo[] %%i F
    if !F.ModifyedSecAgo! GTR %MaxSecAgo% (
       echo !F.PNX! is too old {!F.DT! is !F.ModifyedSecAgo! sec. ago}
    )
)
 
goto :eof
 
::===========================================================================
:DateTime2Seconds[]
::===========================================================================
:: %1="DD.MM.YYYY HH:MM:SS" %2=VarName
 
set dt2s.Param=%~1
set dt2s.Year=!dt2s.Param:~6,4!
set dt2s.Month=!dt2s.Param:~3,2!
set dt2s.Day=!dt2s.Param:~0,2!
set dt2s.HH=!dt2s.Param:~11,2!
set dt2s.MM=!dt2s.Param:~14,2!
set dt2s.SS=!dt2s.Param:~17,2!
 
if %dt2s.Year% LSS 1980 (
   set %2=0
   goto :eof
)
if %dt2s.Year% GEQ 2048 (
   set /a %2=0x7FFFFFF+0
   goto :eof
)
 
set S01=0     
set /a S02=S01 + 31 * 86400
set /a S03=S02 + 28 * 86400
set /a S04=S03 + 31 * 86400
set /a S05=S04 + 30 * 86400
set /a S06=S05 + 31 * 86400
set /a S07=S06 + 30 * 86400
set /a S08=S07 + 31 * 86400
set /a S09=S08 + 31 * 86400
set /a S10=S09 + 30 * 86400
set /a S11=S10 + 31 * 86400
set /a S12=S11 + 30 * 86400
 
call :LeapCount[] %dt2s.Day%.%dt2s.Month%.%dt2s.Year%
 
call :Trim1st0[] %dt2s.Day% dt2s.Day
call :Trim1st0[] %dt2s.HH%  dt2s.HH 
call :Trim1st0[] %dt2s.MM%  dt2s.MM 
call :Trim1st0[] %dt2s.SS%  dt2s.SS 
 
Set /a %2=((%dt2s.Year%-1980)*31536000) + S%dt2s.Month% + (%dt2s.Day%-1+%LeapCount%)*86400 + %dt2s.HH%*3600 + %dt2s.MM%*60 + %dt2s.SS%
 
goto :eof
 
::===========================================================================
:GetFileInfo[]
::===========================================================================
:: %1: filename %2: VarName
:: return: VarName.Origin VarName.Drive VarName.Path... etc
 
set %2.Origin=%1
for %%i in (%1) do (
   set %2.Drive=%%~di
   set %2.Path=%%~pi
   set %2.DPath=%%~dpi
   set %2.PNX=%%~fi
   set %2.NX=%%~nxi
   set %2.DT=%%~ti
   set %2.Size=%%~zi
)
 
if not "!%2.DT!"=="" (
   set %2.Year=!%2.DT:~6,4!
   set %2.Month=!%2.DT:~3,2!
   set %2.Day=!%2.DT:~0,2!
   set %2.HH=!%2.DT:~11,2!
   set %2.MM=!%2.DT:~14,2!
   set %2.SS=00
   call :DateTime2Seconds[] "%DATE% %TIME%" Now.DTSec
   call :DateTime2Seconds[] "!%2.DT!.00"     %2.DTSec
   set /a %2.ModifyedSecAgo=Now.DTSec-%2.DTSec
)
goto :EOF
 
 
::===========================================================================
:Trim1st0[]
::===========================================================================
:: %1=string %2=var
if "%1"=="0" (
   set %2=%1
   goto :eof
)
set String=%1
set Char=!String:~0,1!
if "!Char!"=="0" (
    set %2=!String:~1!
) else (
   set %2=%1
)
goto :eof
 
::===========================================================================
:DisplayFileInfo[]
::===========================================================================
echo %1.Origin      !%1.Origin!
echo %1.Drive       !%1.Drive! 
echo %1.Path        !%1.Path!  
echo %1.DPath       !%1.DPath!  
echo %1.PNX     !%1.PNX!
echo %1.NX      !%1.NX!
echo %1.DT      !%1.DT!
echo %1.DTSec       !%1.DTSec!
echo %1.Size        !%1.Size!
echo %1.Year,Month,Day  !%1.Year!,!%1.Month!,!%1.Day!
echo %1.HH,MM,SS    !%1.HH!,!%1.MM!,!%1.SS!
echo %1.ModifyedSecAgo  !%1.ModifyedSecAgo!
goto :eof
 
 
::===========================================================================
:LeapCount[]
::===========================================================================
:: %1=date, 1.1.1999 must be passed as 01.01.1999
:: return: !LeapCount!, Count of leap Days from 01.01.1980 to %1
 
set LeapCount.Debug==No
if "%1"=="-debug" (
   shift
   set LeapCount.Debug==Yes
)
 
set LeapCount.Date=%1
set LeapCount.Year=%LeapCount.Date:~-4%
set LeapCount.Month=%LeapCount.Date:~3,2%
set LeapCount.Day=%LeapCount.Date:~0,2%
 
set LeapCount=0
 
for /l %%i in (1980,1,!LeapCount.Year!) do (
    set /a LeapCount.Div4=%%i   %% 4
    set /a LeapCount.Div100=%%i %% 100
    set /a LeapCount.Div400=%%i %% 400
 
    set LeapCount.IsLeapYear=No
    if !LeapCount.Div400!==0 (
       set LeapCount.IsLeapYear=Yes
    ) else (
       if !LeapCount.Div4!==0 (
           if not !LeapCount.Div100!==0 (
              set LeapCount.IsLeapYear=Yes
           )
       )
    )
    if !LeapCount.IsLeapYear!==Yes (
       if !LeapCount.Year!==%%i (
          if !LeapCount.Month! GEQ 03 (
             set /a LeapCount+=1
          )
       ) else (
          set /a LeapCount+=1
       )
       if "LeapCount.Debug"=="Yes" (
          echo LeapCount: %%i !LeapCount!
       )
    )
)
goto :eof
C>dtdemo.bat C:\Scripts\*.*
C:\Scripts\1 is too old {28.05.2012 00:53 is 541 sec. ago}
C:\Scripts\png.vbs is too old {28.05.2012 00:14 is 2882 sec. ago}
C:\Scripts\post is too old {27.05.2012 23:28 is 5642 sec. ago}
C:\Scripts\ppp.bat is too old {27.05.2012 22:52 is 7802 sec. ago}
C:\Scripts\TestPing.bat is too old {27.05.2012 23:16 is 6362 sec. ago}
C:\Scripts\trysample.vbs is too old {27.05.2012 15:22 is 34802 sec. ago}
2
DeeMass
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 10
28.05.2012, 17:17  [ТС] #3
Спасибо!
Нет, не курсовая, задача просто такая появилась, а nnCron использовать не хотелось.
0
CyberMuesli
3 / 3 / 1
Регистрация: 19.05.2012
Сообщений: 13
29.05.2012, 09:53 #4
что ж это за спешка такая - 5 минут залежались файлы и уже их искать надо? )
0
DeeMass
0 / 0 / 0
Регистрация: 10.06.2010
Сообщений: 10
19.06.2012, 17:23  [ТС] #5
да, вот такие важные файлы бывают)
0
elektron
0 / 0 / 0
Регистрация: 18.01.2012
Сообщений: 17
05.11.2014, 17:51 #6
CyberMuesli, а можно хоть немного комментариев к даному скрипту?Тоже хочеться такой скрипт, только под себя переделать, а в BAT несильон?
0
05.11.2014, 17:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2014, 17:51
Привет! Вот еще темы с ответами:

Копирование всех файлов с заменой на более свежие по дате создания - CMD/BAT
Ну весь вопрос в теме, как скопировать все файлы знаю, а как поработать при замене с датой создания файлов? Как их сравнить?

Перемещение файлов, в дате создания которых есть парный месяц и непарный день - CMD/BAT
как создать пакетный файл, который перемещает в папку filtered файлы дата созданий которых парный месяц и непарный день.

Для всех файлов из указанного каталога создать подкаталоги с именем, равным дате создания файла... - CMD/BAT
Написать и отладить пакетный файл, который для всех файлов из указанного каталога создает подкаталоги с именем равной дате создания файла и...

Перемещение файлов по расширению - CMD/BAT
Доброго времени суток. Очень нужна Ваша помощь. Требуется создать bat-ник, который будет ПЕРЕМЕЩАТЬ все файлы с расширением LOG, из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru