Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/111: Рейтинг темы: голосов - 111, средняя оценка - 4.92
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380

Exit /b :eof не переходит в конец файла

28.10.2011, 22:14. Показов 21252. Ответов 97
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Исходя из темы данные команды должны переходить в конец, файла и эти команды используют что б выйти из так называемого цикла /b необходимо что б не закрыть окно бат файла.
На практике получается так что данная команда не выполняется так как нужно и вместо перехода в конец батника срабатывает и начинаются никому не нужное выполнение циклов.
Кто вообще встречался с проблемами в этой команде ?

Ни одна ни вторая команда не помогает, а выйти нужно что б произошел запуск следующего батника.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.10.2011, 22:14
Ответы с готовыми решениями:

Конец файла EOF
Начал заново учить программирование на c++ по книге Кернигана, Ритчи. Дошел до главы с EOF и никак не могу разобраться уже несколько часов....

Команда send keys переходит в конец макроса
Здравствуйте, подскажите, пожалуйста как решить проблему.. есть макрос (их много, но выложу один), вникать в него не нужно.. суть одна...

Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла
Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

97
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
09.11.2011, 23:57  [ТС]
Студворк — интернет-сервис помощи студентам
Чето как съездил в командировку так все перестало работать сначала время из-за которого рубила из-за системы исчесления, а теперь вот почему-то не сканирует ни один файл. где ошибка ?

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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
@echo on
 
setlocal enabledelayedexpansion
SET thePATH=%1
echo Проверка ящика номер %thePATH% 
goto rrr
if not exist "E:\OTDEL\%thePATH%" call :start 
 
 
 
rem echo начинаем просмотр ящиков
rem pause  
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
dir /a-d /b "E:\OTDEL\%thePATH%\OUT\OSB\%%a" 1>nul 2>nul  && (
goto start)
)
exit /b
 
 
:start
 
:rrr
 
::Устанавливаем пути
::*************************************************************************************
rem SET thePATH=%1
 
rem устанавливаем максимальный размер отправляемых файлов
SET massa=20971520
 
 
rem Устанавливаем путь отправки временно !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
rem SET GOOD=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
SET GOOD=E:\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
 
rem Устанавливаем путь для ARJ32.exe PKZIP25.EXE Rar.exe архиваторов 
rem SET ARC=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\ARC
SET ARC=E:\SERVER\BAT\AUTO_TECOS\ARC
 
 
::**************************************************************************************
 
rem Устанавливаем путь для SBERSIGN
rem SET SBERSIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERSIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s
             
 
rem Устанавливаем путь для хранения базы ключей Sbersign
rem SET SBERDATA=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERDATA=E:\SERVER\BAT\AUTO_TECOS\sign_s
 
rem Устанавливаем путь для доступа к ящикам
rem set Put=\\Postal\ORG_MAIL\OTDEL
SET Put=E:\OTDEL
rem echo %Put%
rem pause
 
 
::**************************************************************************************
 
rem  Устанавливаем путь лога для ящиков 
rem SET LOG_USER=\\Postal\ORG_MAIL\OTDEL\%thePATH%\LOG
SET LOG_USER=E:\OTDEL\%thePATH%\LOG
               
rem  Устанавливаем путь лога для оператора
rem SET LOG_OPER=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\LOG
SET LOG_OPER=E:\SERVER\BAT\AUTO_TECOS\LOG
 
rem  Устанавливаем путь лога для ящиков TEMP
SET LOG_USER_TEMP=E:\SERVER\BAT\AUTO_TECOS\LOG\LOG_OTD
 
rem /l= путь для лога Sbersign
rem SET SET_SIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
SET SET_SIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
 
 
 
::**************************************************************************************
 
 
 
 
rem echo Создаем структуру каталогов
::**************************************************************************************
                                 
 
rem if %thePATH%==010 ( if not exist "%Put%\%thePATH%\OUT\Moscow\Transport_packet\" md "%Put%\%thePATH%\OUT\Moscow\Transport_packet\")
 
rem if not exist "%Put%\%thePATH%\OUT\Moscow\" md "%Put%\%thePATH%\OUT\Moscow\"
 
 
 
 
 
:: Создаем структуру для запаковки файлов
if not exist "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\" md "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\"
if not exist "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\" md "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\"
if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LNK\Arj_pack\Arj_pack.bat" "E:\OTDEL\%thePATH%\Arj_pack\"
 
 
 
 
if not exist "E:\OTDEL\%thePATH%\LOG\" md "E:\OTDEL\%thePATH%\LOG\"
if not exist "%Put%\%thePATH%\NOT_OUT\" md "%Put%\%thePATH%\NOT_OUT\"
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
if not exist "%Put%\%thePATH%\OUT\OSB\%%a\" md "%Put%\%thePATH%\OUT\OSB\%%a\"
)
                                                  
 
 
rem if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\Arj_pack\*.bat" "E:\OTDEL\%thePATH%\Arj_pack\"
rem if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\Arj_pack\*.lnk" "E:\OTDEL\%thePATH%\Arj_pack\"
 
 
 
 
 
rem echo проверяем созданную структуру
rem pause
::**************************************************************************************
 
 
::задейственные переменные e-arj, f-zip, g-rar, h-doc, k-docx. 
 
 
 
set dd=%date%
set tt=%time%
for /f "tokens=1-3 delims=-./" %%i in ("%dd%") do (
set day=%%i
set month=%%j
set year=%%k
)
if "%day:~2,1%"==" " set day=%day:~3,2%
set t=%day%
if not "%day:~2,1%"=="" (
set day=%year%
set year=%t%
)
if "%year:~2,1%"=="" set year=20%year%
 
set hour=%tt:~0,2%
if "%hour:~0,1%"=="0" (set /a hour=%hour:~1%) else (set /a hour=%hour%)
if %hour% lss 10 set hour=0%hour%
set minute=%tt:~3,2%
set sec=%tt:~6,2%
rem echo %day%.%month%.%year% %hour%:%minute%:%sec%
rem pause
 
rem echo время начала проверки %day% %month% %year% %hour% %minute% %sec%
 
 set out_time=%day%%month%%hour%%minute%
 
 
 
::****************************************
::*      Установка шапок для логов       *                              
::****************************************                            
 
if not exist "%LOG_OPER%\HISTORY_%year%.txt" (            
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
echo *   №   *    Дата    *  Время   * Отправлен     *  Значение ошибки       * Имя файла    * Размер файла     * Путь нахождения файла              * >>%LOG_OPER%\HISTORY_%year%.txt
echo * ящика *  отправки  * отправки * Не отправлен  *                        *              *                  *                                    * >>%LOG_OPER%\HISTORY_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
)                                                               
 
 
if not exist "%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
if not exist "%LOG_USER%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
::**************************************************************************************
 
          
 
::начинаем проверку всех директорий на наличие файлов
echo ::начинаем проверку всех директорий на наличие файлов
 
rem pause
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
 
 set the_osb=%%a
 echo %%a
 pause
 set maska=????????
 rem echo Установили каталог проверки ОСБ # !the_osb!
   if not exist "%GOOD%\OSB\%%a\" md "%GOOD%\OSB\%%a\"
  rem задаем форматы дозволенных файлов поиска
 
  for %%b in (rtf,pdf,xls,txt,tiff) do (
   
                                                                                           
   for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.%%b" 2^>nul ^| findstr /i /r /c:"^..........*\.%%b$"') do (
    rem rename %Put%\%thePATH%\OUT\OSB\%%a\%%c %%c
    rem if not errorlevel 0 ( echo файл свободен ) else ( echo файл занят )
    rem pause
    for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     SET jj=%%~zj
     if %%~zj lss %massa% (
     
     echo сработало первое IF на проверку на размер меньше 10 мб 
     pause
     %SBERSIGN%\sbersign.exe /p  /l=%SET_SIGN%\sign.lst "%Put%\%thePATH%\OUT\OSB\%%a\%%c"                                                                   
     SET cc=%%c
     if errorlevel 1 ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
 
 
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     call :mis_1) else ( 
     if not exist "%GOOD%\OSB\%%a" md "%GOOD%\OSB\%%a"
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\OSB\%%a\"
     if errorlevel 0 (call :mis_2) else (call :mis_7))
     
     ) else ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3)
         
     )
    )
   ) 
  rem Задаем формат архива ARJ для поиска переменная ARJ=%%e
  for /f "delims=" %%e in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.arj" 2^>nul ^| findstr /i /r /c:"^..........*\.arj$" ') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%e"
   
   rem echo Нашли !ARJ!
   rem rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%e") do (
     SET ee=%%e
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\arj32.exe e -y !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
     ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%e" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
        call :mis_9 ) 
    )
   )
 
  rem Задаем формат архива ZIP для поиска
  for /f "delims=" %%f in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.zip" 2^>nul ^| findstr /i /r /c:"^..........*\.arj$" ') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%f"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%f") do (
     SET ff=%%f
     set jj=%%~zj
     if %%~zj lss %massa% (
      %ARC%\pkzip25.exe -over=all -extract !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
      call :temp_extr
      ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%f" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_8 )
    )
   )
 
 
  rem Задаем формат архива RAR для поиска
  for /f "delims=" %%g in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.rar" 2^>nul ^| findstr /i /r /c:"^..........*\.arj$" ') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%g"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%g") do (
     SET gg=%%g
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\Rar.exe e -y %ARJ% %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
     ) else (
 
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%g" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_10 ) 
    )
   )
 
 
  rem Задаем формат архива DOC для поиска
  for /f "delims=" %%h in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.doc" 2^>nul') do (
   SET hh=%%h
   set jj=%%~zh
   set DOC="%Put%\%thePATH%\OUT\OSB\%%a\%%h"
   rem echo Нашли !DOC! %%a
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOC! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_4 )
 
  rem Задаем формат архива DOCX для поиска
  for /f "delims=" %%k in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.docx" 2^>nul') do (
   SET kk=%%k
   set jj=%%~zk
   set DOCX="%Put%\%thePATH%\OUT\OSB\%%a\%%k"
   rem echo Нашли !DOCX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOCX! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_5) 
 
   echo проверка на наличие мусора
   pause
  for /f "delims=" %%l in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.*" 2^>nul') do (
   SET ll=%%l
   set jj=%%~zl
   echo %jj%
   pause
   set ALL="%Put%\%thePATH%\OUT\OSB\%%a\%%l"
   rem echo Нашли !ALL!доработать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   rem pause
   if not exist %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\ md %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\
   echo Y|move /y !ALL!  "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_6)
 
  
  
 )
 
 
rem echo Выполнили программу просмотра всех каталогов ящика №%thePATH%
rem pause
 
 
goto end
 
 
:mis_1
:m1
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m1
)
echo * %S% *
rem pause
echo сейчас будет записан лог ошибки ЭЦП
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Ошибка ЭЦП             * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b 
 
 
 
:mis_2
:m2
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m2
)
echo сейчас будет записан лог правильной эцп и перенос файла
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% *    Отправлен  * Ошибок нет             * %cc% * %jj%  * Отправлен в ОСБ № %the_osb%             * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause 
exit /b
 
 
 
:mis_3
:m3
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m3
)
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:mis_4
:m4
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m4
)
 
echo сейчас будет записан лог файла DOC
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOC           * %hh% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
:mis_5
:m5
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m5
)
 
echo сейчас будет записан лог файла DOCX
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOCX          * %kk% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:mis_6
:m6
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m6
)
 
echo сейчас будет записан лог файла не верно заданного формата
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Имя файла неверно      * %ll% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:mis_7
:m7
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m7
)
 
echo сейчас будет записан лог файла перезаписываемого файла
rem pause                                                                         
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% *    Отправлен  * Файл перезаписан * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_8
 
:m8
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m8
)
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %ff% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
:mis_9
 
:m9
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m9
)
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %ee% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_10
 
:m10
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m10
)
 
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %gg% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:temp_extr
 
rem Распаковка найденных архивов
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" 2^>nul') do (
 %ARC%\arj32.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" 2^>nul') do (
 %ARC%\pkzip25.exe -over=all -extract "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" 2^>nul') do (
 %ARC%\Rar.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
 
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" goto :temp_extr
 
 
 
echo Если находим DOC или DOCX производим выход и переносим архив в каталог для неотправки
rem pause
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.doc" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 echo Y|move /y "%ARJ% %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 exit /b
)
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.docx" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 echo Y|move /y "%ARJ% %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 exit /b
)                       
 
rem Копируем все базы ключей
rem проверяем архивы на наличие ЭЦП
rem pause
rem copy  /y %SBERDATA_FROM%\sign.d04 %SBERDATA%\sign.dat >nul                  
echo ****************************************  >>%SET_SIGN%\sign.lst
echo * %ARJ% * >>%SET_SIGN%\sign.lst
echo ****************************************  >>%SET_SIGN%\sign.lst
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP"
%SBERSIGN%\sbersign.exe /p /l=%SET_SIGN%\sign.lst *.*
if errorlevel 1 (
if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
echo Y|move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
call :mis_1) else (
if not exist "%GOOD%\OSB\%the_osb%\" md "%GOOD%\OSB\%the_osb%\"
echo Y|move /y %ARJ% "%GOOD%\OSB\%the_osb%\"
call :mis_2)
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%"
rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\"
exit /b
 
 
:end
 
 
 
echo добавляем информацию в историю и меняем кодировку 
chcp 866 >nul
for /f "tokens=*" %%x in (%LOG_OPER%\HISTORY_TEMP_%year%.txt) do call :convert %%x
del %LOG_OPER%\HISTORY_TEMP_%year%.txt 
goto end11
 
:convert
chcp 866 >nul
echo %*>>%LOG_OPER%\HISTORY_%year%.txt
chcp 1251 >nul
echo %*>>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo %*>>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
chcp 866 >nul
exit /b
 
 
 
 
 
 
 
:end11
 
 
echo Закончили обработку ящика №%thePATH%
rem cls
rem goto start
rem pause
exit /b
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
10.11.2011, 00:29
Ну вы неправильно написали
findstr /i /r /c:"^..........*\.%%b$"
а я сказал что надо findstr /i /r /c:"^........\.%%b$" и в остальных строчках также
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
10.11.2011, 21:25  [ТС]
Спасибо сегодня все пересмотрел и как ошибка оказалась усталость после работы и в следствии чего невнимательность. Вот доделываю код.

Как и обещал делюсь ))
первый батник
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cls
 
@echo off
setlocal enabledelayedexpansion
echo Запуск сбора почты 
rem pause
:start
cls
rem for %%a in (010,011,012,013,020,021,022,023,031,033,035,036,040,050,060,070,071,072,073,074,075,080,081,084,085,088,090,100,101,110,111,112,113,114,115,116,117,120,121,130,131,132,137,140,141,142,143,144,145,146,150,160,163,164,170,171,175,180,183,192,193,194,200,210,220,230,250,251,260,261,262,263,300,320,340,350,351,352,353,354,355,356,357,358,359,360,361,362,700,701,710,720,730,740,750,760,770,790,800,810,820,830,840,841,850,860,870) do (
 
for %%a in (010,011,012,013,020,021,022,023,031,033,035,036,040,050,060,070,071,072,073,074,075,080,081,084,085,088,090,100,101,110,111,112,113,114,115,116,117,120,121,130,131,132,137,140,141,142,143,144,145,146,150,160,163,164,170,171,175,180,183,192,193,194,200,210,220,230,250,251,260,261,262,263,300,320,340,350,351,352,353,354,355,356,357,358,359,360,361,362,700,701,710,720,730,740,750,760,770,790,800,810,820,830,840,841,850,860,870) do (
    
call E:\SERVER\BAT\AUTO_TECOS\BAT\test_all.bat %%a
)
goto start
rem pause
второй батник который я еще прописываю и исправляю всякие недочеты

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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
@echo on
 
setlocal enabledelayedexpansion
SET thePATH=%1
echo Проверка ящика номер %thePATH% 
 
if not exist "E:\OTDEL\%thePATH%" call :start 
 
 
 
rem echo начинаем просмотр ящиков
rem pause  
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
dir /a-d /b "E:\OTDEL\%thePATH%\OUT\OSB\%%a" 1>nul 2>nul  && (
goto start)
)
exit /b
 
 
:start
 
 
 
::Устанавливаем пути
::*************************************************************************************
rem SET thePATH=%1
 
rem устанавливаем максимальный размер отправляемых файлов
SET massa=20971520
 
 
rem Устанавливаем путь отправки временно !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
rem SET GOOD=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
SET GOOD=E:\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
 
rem Устанавливаем путь для ARJ32.exe PKZIP25.EXE Rar.exe архиваторов 
rem SET ARC=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\ARC
SET ARC=E:\SERVER\BAT\AUTO_TECOS\ARC
 
 
::**************************************************************************************
 
rem Устанавливаем путь для SBERSIGN
rem SET SBERSIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERSIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s
             
 
rem Устанавливаем путь для хранения базы ключей Sbersign
rem SET SBERDATA=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERDATA=E:\SERVER\BAT\AUTO_TECOS\sign_s
 
rem Устанавливаем путь для доступа к ящикам
rem set Put=\\Postal\ORG_MAIL\OTDEL
SET Put=E:\OTDEL
rem echo %Put%
rem pause
 
 
::**************************************************************************************
 
rem  Устанавливаем путь лога для ящиков 
rem SET LOG_USER=\\Postal\ORG_MAIL\OTDEL\%thePATH%\LOG
SET LOG_USER=E:\OTDEL\%thePATH%\LOG
               
rem  Устанавливаем путь лога для оператора
rem SET LOG_OPER=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\LOG
SET LOG_OPER=E:\SERVER\BAT\AUTO_TECOS\LOG
 
rem  Устанавливаем путь лога для ящиков TEMP
SET LOG_USER_TEMP=E:\SERVER\BAT\AUTO_TECOS\LOG\LOG_OTD
 
rem /l= путь для лога Sbersign
rem SET SET_SIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
SET SET_SIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
 
 
 
::**************************************************************************************
 
 
 
 
rem echo Создаем структуру каталогов
::**************************************************************************************
                                 
 
if %thePATH%==010 ( if not exist "%Put%\%thePATH%\OUT\Moscow\Transport_packet\" md "%Put%\%thePATH%\OUT\Moscow\Transport_packet\")
 
if not exist "%Put%\%thePATH%\OUT\Moscow\" md "%Put%\%thePATH%\OUT\Moscow\"
 
 
 
 
 
:: Создаем структуру для запаковки файлов
if not exist "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\" md "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\"
if not exist "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\" md "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\"
if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LNK\Arj_pack\Arj_pack.bat" "E:\OTDEL\%thePATH%\Arj_pack\"
 
 
 
 
if not exist "E:\OTDEL\%thePATH%\LOG\" md "E:\OTDEL\%thePATH%\LOG\"
if not exist "%Put%\%thePATH%\NOT_OUT\" md "%Put%\%thePATH%\NOT_OUT\"
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
if not exist "%Put%\%thePATH%\OUT\OSB\%%a\" md "%Put%\%thePATH%\OUT\OSB\%%a\"
)
                                                  
 
 
rem if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\Arj_pack\*.bat" "E:\OTDEL\%thePATH%\Arj_pack\"
rem if not exist "E:\OTDEL\%thePATH%\Arj_pack\*.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\Arj_pack\*.lnk" "E:\OTDEL\%thePATH%\Arj_pack\"
 
 
 
 
 
rem echo проверяем созданную структуру
rem pause
::**************************************************************************************
 
 
 
 
set dd=%date%
set tt=%time%
for /f "tokens=1-3 delims=-./" %%i in ("%dd%") do (
set day=%%i
set month=%%j
set year=%%k
)
if "%day:~2,1%"==" " set day=%day:~3,2%
set t=%day%
if not "%day:~2,1%"=="" (
set day=%year%
set year=%t%
)
if "%year:~2,1%"=="" set year=20%year%
 
set hour=%tt:~0,2%
if "%hour:~0,1%"=="0" (set /a hour=%hour:~1%) else (set /a hour=%hour%)
if %hour% lss 10 set hour=0%hour%
set minute=%tt:~3,2%
set sec=%tt:~6,2%
rem echo %day%.%month%.%year% %hour%:%minute%:%sec%
rem pause
 
rem echo время начала проверки %day% %month% %year% %hour% %minute% %sec%
 
 set out_time=%day%%month%%hour%%minute%
 
 
 echo установили дату 
pause
 
::****************************************
::*      Установка шапок для логов       *                              
::****************************************                            
 
if not exist "%LOG_OPER%\HISTORY_%year%.txt" (            
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
echo *   №   *    Дата    *  Время   * Отправлен     *  Значение ошибки       * Имя файла    * Размер файла     * Путь нахождения файла              * >>%LOG_OPER%\HISTORY_%year%.txt
echo * ящика *  отправки  * отправки * Не отправлен  *                        *              *                  *                                    * >>%LOG_OPER%\HISTORY_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
)                                                               
 
 
if not exist "%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt" (
 
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
if not exist "%LOG_USER%\HISTORY_%thePATH%_%year%.txt" (
 
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
::**************************************************************************************
 
          
 
::начинаем проверку всех директорий на наличие файлов
echo ::начинаем проверку всех директорий на наличие файлов
 
rem pause
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
 
 set the_osb=%%a
 rem echo %%a
 rem pause
 rem echo Установили каталог проверки ОСБ # !the_osb!
 for /f "delims=" %%g in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.???" 2^>nul ^| findstr /i /r /c:"^..........*\.%%b$" ') do (
  SET G=%%~ng
  rem echo %G% !G! and %%g
  rem pause
 
  if not exist "%GOOD%\OSB\%%a\" md "%GOOD%\OSB\%%a\"
  rem задаем форматы дозволенных файлов поиска
 
  for %%b in (rtf,pdf,xls,txt,tiff) do (
   
 
   for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.%%b" 2^>nul ^| findstr /i /r /c:"^..........*\.%%b$" ') do (
    rem rename %Put%\%thePATH%\OUT\OSB\%%a\%%c %%c
    rem if not errorlevel 0 ( echo файл свободен ) else ( echo файл занят )
    rem pause
    for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     SET jj=%%~zj
     if %%~zj lss %massa% (
     
     rem echo сработало первое IF на проверку на размер меньше 10 мб 
     rem pause
     %SBERSIGN%\sbersign.exe /p  /l=%SET_SIGN%\sign.lst "%Put%\%thePATH%\OUT\OSB\%%a\%%c"                                                                   
     SET cc=%%c
     if errorlevel 1 ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     call :mis_1) else ( 
     if not exist "%GOOD%\OSB\%%a" md "%GOOD%\OSB\%%a"
     move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\OSB\%%a"
     call :mis_2 )
     ) else ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a"
        call :mis_3)
         
     )
 
    )
   ) 
  rem Задаем формат архива ARJ для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.arj" 2^>nul ^| findstr /i /r /c:"^..........*\.arj$"') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   
   rem echo Нашли !ARJ!
   rem rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\arj32.exe e -y !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
     ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a" 
        call :mis_3 ) 
    )
   )
 
  rem Задаем формат архива ZIP для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.zip" 2^>nul ^| findstr /i /r /c:"^..........*\.zip$" ') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
      %ARC%\pkzip25.exe -over=all -extract !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
      call :temp_extr
      ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a"
        call :mis_3 )
    )
   )
 
 
  rem Задаем формат архива RAR для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\????????.rar" 2^>nul ^| findstr /i /r /c:"^..........*\.rar$" ') do (
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\Rar.exe e -y %ARJ% %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
     ) else (
 
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a"
        call :mis_3 ) 
    )
   )
 
 
  rem Задаем формат архива DOC для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.doc" ') do (
   SET cc=%%c
   set jj=%%~zc
   set DOC="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOC! %%a
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   move /y !DOC! %Put%\%thePATH%\NOT_OUT\%out_time%\%%a
   call :mis_4 )
 
  rem Задаем формат архива DOCX для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.docx" ') do (
   SET cc=%%c
   set jj=%%~zc
   set DOCX="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOCX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   move /y !DOCX! %Put%\%thePATH%\NOT_OUT\%out_time%\%%a
   call :mis_5) 
 
   rem echo проверка на наличие мусора
   rem pause
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.*" 2^>nul ') do (
   SET cc=%%c
   set jj=%%~zc
   set ALL="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ALL!доработать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   rem pause
   if not exist %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\ md %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\
   move /y !ALL!  %Put%\%thePATH%\NOT_OUT\%out_time%\%%a
   call :mis_6)
 
  
  )
 )
 
 
rem echo Выполнили программу просмотра всех каталогов ящика №%thePATH%
rem pause
 
 
goto end
 
 
:mis_1
 
:m1
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m1
)
 
echo * %S% *
rem pause
 
 
echo сейчас будет записан лог ошибки ЭЦП
rem pause
 
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Ошибка ЭЦП             * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b 
 
:mis_2
 
:m2
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m2
)
 
 
echo сейчас будет записан лог правильной эцп и перенос файла
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% *    Отправлен  * Ошибок нет             * %cc% * %jj%  * Отправлен в ОСБ № %the_osb%             * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause 
exit /b
 
:mis_3
 
 
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_4
 
 
 
echo сейчас будет записан лог файла DOC
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOC           * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
:mis_5
 
echo сейчас будет записан лог файла DOCX
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOCX          * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:mis_6
 
echo сейчас будет записан лог файла не верно заданного формата
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Имя файла неверно      * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
 
 
:temp_extr
 
rem Распаковка найденных архивов
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" 2^>nul') do (
 %ARC%\arj32.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" 2^>nul') do (
 %ARC%\pkzip25.exe -over=all -extract "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" 2^>nul') do (
 %ARC%\Rar.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
 
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" goto :temp_extr
 
 
 
echo Если находим DOC или DOCX производим выход и переносим архив в каталог для неотправки
rem pause
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.doc" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 move /y %ARJ% %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 exit /b
)
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.docx" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 move /y %ARJ% %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 exit /b
)                       
 
rem Копируем все базы ключей
rem проверяем архивы на наличие ЭЦП
rem pause
rem copy  /y %SBERDATA_FROM%\sign.d04 %SBERDATA%\sign.dat >nul                  
echo ****************************************  >>%SET_SIGN%\sign.lst
echo * %ARJ% * >>%SET_SIGN%\sign.lst
echo ****************************************  >>%SET_SIGN%\sign.lst
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP"
%SBERSIGN%\sbersign.exe /p /l=%SET_SIGN%\sign.lst *.*
if errorlevel 1 (
if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
call :mis_1) else (
if not exist "%GOOD%\OSB\%the_osb%\" md "%GOOD%\OSB\%the_osb%\"
move /y %ARJ% "%GOOD%\OSB\%the_osb%\"
call :mis_2)
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%"
rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\"
exit /b
 
 
 
 
 
 
 
 
 
 
:end
 
 
 
echo добавляем информацию в историю и меняем кодировку 
chcp 866 >nul
for /f "tokens=*" %%x in (%LOG_OPER%\HISTORY_TEMP_%year%.txt) do call :convert %%x
del %LOG_OPER%\HISTORY_TEMP_%year%.txt
goto end11
 
:convert
chcp 866 >nul
echo %*>>%LOG_OPER%\HISTORY_%year%.txt
chcp 1251 >nul
echo %*>>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo %*>>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
chcp 866 >nul
exit /b
 
 
 
 
 
 
 
:end11
 
 
echo Закончили обработку ящика №%thePATH%
rem cls
rem goto start
rem pause
exit /b
будут замечания или еще что буду рад. Может есть еще какие идеи или какие-то методы использую не так ... Вообщем совместного мучения за 3 недели изучения на данном ресурсе получилось сотворить такой сценарик.
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
10.11.2011, 23:15
а что там у вас move не срабатывал если файл уже был?
разобрались?
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
10.11.2011, 23:18  [ТС]
Вроде да там оказалось все намного проще я смотрел не на ту дату ! Смотрел на дату создания ! и думал что он его не заменял хотя он его заменял ! Спасибо буду дальше дописывать ! Хорошо когда голова работает ! Буду тогда тему продолжать ! Единственное как я не пытался так и не понял как можно из директории взять только файлы в таком формате ????????.arj кроме того способа который Вы предложили ?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
10.11.2011, 23:46
просто dir вам все файлы выдаст причем и меньшего размера имени.
А так есть еще вариант отделить имя от расширения и проверить через if но это более громоздкий код зачем он вам.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
11.11.2011, 09:10  [ТС]
Вот постепенно подхожу к заключительному этапу появился вопрос как можно выполнять определенные действия например для файлов типа s100????.txt например сделать так называемые исключения ? Если найден такой файл то с ним нужно сделать тото, тото? А то когда писал для ????????.txt так не получалось приходилось применять еще дополнительно конструкцию типа findstr /i /r /c:"^........\.%%b$" .
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
11.11.2011, 10:06
для начала исправьте уже findstr /i /r /c:"^........\.%%b$"
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
12.11.2011, 21:18  [ТС]
Цитата Сообщение от atributz Посмотреть сообщение
для начала исправьте уже findstr /i /r /c:"^........\.%%b$"
А что здесь исправлять ?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
13.11.2011, 01:17
у вас в коде написано findstr /i /r /c:"^..........*\.%%b$
а нужно findstr /i /r /c:"^........\.%%b$"
в общем вместо 10 точек и звездочки нужно восемь точек.

Добавлено через 1 час 26 минут
как можно выполнять определенные действия например для файлов типа s100????.txt например сделать так называемые исключения ?
внутри соответствующего цикла придется завести переменную, которой будем ставить значение 1 если файл начинается с s100 и 0 если нет.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
set fs100=0
if %%b==txt (
set txtname=%%c
if "!txtname:~0,4!"=="s100" set fs100=1
)
if !fs100!==0 (
::тут ваши стандартные действия для файлов
)
if !fs100!==1 (
::тут ваши действия для файлов s100????.txt
)
1
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
13.11.2011, 23:21  [ТС]
Как я понял конструкцию громоздкого кода пришлось применять. Спасибо. Чето разрастается батник до размеров приложения что самое интересное пока все решается средствами батника посмотрим дальше.
Еще раз спасибо.

if "!txtname:~0,4!" вот в этой строке мы берем обозначаем переменную !!(почему когда вызываем переменную,в конструкциях For или IF обозначаем двумя восклицательными знаками а не %% ??? ) , заключаем в кавычки что б если название будет большим слева отступаем 4 символа переменная у нас называется txtname, зачем ставим : и зачем ставим ~0,4 чето не могу понять что обозначает ~, 0, и , ??????

Добавлено через 5 минут
у вас в коде написано findstr /i /r /c:"^..........*\.%%b$
а нужно findstr /i /r /c:"^........\.%%b$"
в общем вместо 10 точек и звездочки нужно восемь точек.
Спасибо что увидели, я просто перед тем как редактирую делаю резервные копии, и тут все не получалось взял из резервной копии где этот ньюанс не исправлял. Спасибо.

Кстати столкнулся с проблемой скобок. Нет ли какого-либо редактора по BATH ???? А то не всегда бывает все что открыл закрыть приходится разбирать достаточно детально, а иной раз и добавляешь что и меняешь конструкцию и получается все что изменил не всегда получается потом сразу подправить все так как нужно. Ну редактора типа как у Visual Studia ? или я многого хочу ?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
14.11.2011, 03:46
Notepad++ неплохо справляется со всем этим делом.
При наведении текстового курсора на скобку она выделяется красным цветом и соответствующая ей закрывающая тоже выделяется красным.

Синтаксис батника он хорошо показывает, но к сожалению в стандартном синтаксисе batch блоки не показываются.
Если хотите можно выбрать синтаксис Lisp, тогда блоки как раз показывает.(но часть синтаксиса теряется все таки он другой)

Добавлено через 4 минуты
По хорошему там бы доделать синтаксис batch не помешало.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
17.11.2011, 23:02  [ТС]
не могу понять что он не может найти ?????????????
Вот код:

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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
echo on
 
setlocal enabledelayedexpansion
SET thePATH=%1
echo Проверка ящика номер %thePATH% 
 
 
rem Устанавливаем время срабатывания батника
::**************************************************************************************
set dd=%date%
set tt=%time%
for /f "tokens=1-3 delims=-./" %%i in ("%dd%") do (
set day=%%i
set month=%%j
set year=%%k
)
if "%day:~2,1%"==" " set day=%day:~3,2%
set t=%day%
if not "%day:~2,1%"=="" (
set day=%year%
set year=%t% )
if "%year:~2,1%"=="" set year=20%year%
set hour=%tt:~0,2%
if "%hour:~0,1%"=="0" (set /a hour=%hour:~1%) else (set /a hour=%hour%)
if %hour% lss 10 set hour=0%hour%
set minute=%tt:~3,2%
set sec=%tt:~6,2%
set out_time=%day%%month%%hour%%minute%
 
 
rem echo установили дату 
rem pause
 
::Устанавливаем пути доступа
::*************************************************************************************
rem SET thePATH=%1
 
rem устанавливаем максимальный размер отправляемых файлов
SET massa=20971520
 
 
rem Устанавливаем путь отправки временно !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
rem SET GOOD=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
SET GOOD=E:\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
 
rem Устанавливаем путь для ARJ32.exe PKZIP25.EXE Rar.exe архиваторов 
rem SET ARC=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\ARC
SET ARC=E:\SERVER\BAT\AUTO_TECOS\ARC
 
 
::**************************************************************************************
 
rem Устанавливаем путь для SBERSIGN
rem SET SBERSIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERSIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s
             
 
rem Устанавливаем путь для хранения базы ключей Sbersign
rem SET SBERDATA=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERDATA=E:\SERVER\BAT\AUTO_TECOS\sign_s
 
rem Устанавливаем путь для доступа к ящикам
rem set Put=\\Postal\ORG_MAIL\OTDEL
SET Put=E:\OTDEL
rem echo %Put%
rem pause
 
::Установка путей логов
::**************************************************************************************
 
rem  Устанавливаем путь лога для ящиков 
rem SET LOG_USER=\\Postal\ORG_MAIL\OTDEL\%thePATH%\LOG
SET LOG_USER=E:\OTDEL\%thePATH%\LOG
               
rem  Устанавливаем путь лога для оператора
rem SET LOG_OPER=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\LOG
SET LOG_OPER=E:\SERVER\BAT\AUTO_TECOS\LOG
 
rem  Устанавливаем путь лога для ящиков TEMP
SET LOG_USER_TEMP=E:\SERVER\BAT\AUTO_TECOS\LOG\LOG_OTD
 
rem /l= путь для лога Sbersign
rem SET SET_SIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
SET SET_SIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
 
 
 
::**************************************************************************************
 
 
 
if not exist "E:\OTDEL\%thePATH%" call :start 
 
 
 
rem echo начинаем просмотр ящиков
rem pause  
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
dir /a-d /b "E:\OTDEL\%thePATH%\OUT\OSB\%%a" 1>nul 2>nul  && (
goto start)
)
for %%y in (0034.050) do (
if not exist "E:\OTDEL\%thePATH%\OUT\MOSCOW\%%y\" md "E:\OTDEL\%thePATH%\OUT\MOSCOW\%%y\"
dir /a-d /b "E:\OTDEL\900\OUT\MOSCOW\%%y" 1>nul 2>nul  && (
echo запуск MOSCOW
goto start)
 
)
echo Закончили обработку ОСБ Электронного ящика №%thePATH%
exit /b
 
 
:start
 
                                
 
rem if %thePTH%==010 ( if not exist "%Put%\%thePATH%\OUT\Moscow\Transport_packet\" md "%Put%\%thePATH%\OUT\Moscow\Transport_packet\")
 
 
:: Создаем структуру для Электронного ящика № %thePATH%
::**************************************************************************************
if not exist "E:\OTDEL\%thePATH%\" md "E:\OTDEL\%thePATH%\"
if not exist "E:\OTDEL\%thePATH%\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\README.lnk" "E:\OTDEL\%thePATH%\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для IN
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\IN\" md "E:\OTDEL\%thePATH%\IN\"
if not exist "E:\OTDEL\%thePATH%\IN\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\IN\README.lnk" "E:\OTDEL\%thePATH%\IN\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для OUTPUT
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\OUTPUT\" md "E:\OTDEL\%thePATH%\OUTPUT\"
if not exist "E:\OTDEL\%thePATH%\OUTPUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\OUTPUT\README.lnk" "E:\OTDEL\%thePATH%\OUTPUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для ARJ_PACK
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\ARJ_PACK\1_Папка_для_архивации\" md "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\"
if not exist "E:\OTDEL\%thePATH%\ARJ_PACK\2_Готовый_архив\" md "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\"
if not exist "E:\OTDEL\%thePATH%\ARJ_PACK\ARJ_PACK.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\ARJ_PACK\ARJ_PACK.bat" "E:\OTDEL\%thePATH%\ARJ_PACK\"
if not exist "E:\OTDEL\%thePATH%\ARJ_PACK\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\ARJ_PACK\README.lnk" "E:\OTDEL\%thePATH%\ARJ_PACK\"
 
::**************************************************************************************
 
   
 
:: Создаем структуру для OUT
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\OUT\" md "E:\OTDEL\%thePATH%\OUT\"
if not exist "E:\OTDEL\%thePATH%\OUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\OUT\README.lnk" "E:\OTDEL\%thePATH%\OUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для NOT_OUT
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\NOT_OUT\" md "E:\OTDEL\%thePATH%\NOT_OUT\"
if not exist "E:\OTDEL\%thePATH%\NOT_OUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\NOT_OUT\README.lnk" "E:\OTDEL\%thePATH%\NOT_OUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для LOG
::**************************************************************************************
 
if not exist "E:\OTDEL\%thePATH%\LOG\" md "E:\OTDEL\%thePATH%\LOG\"
if not exist "E:\OTDEL\%thePATH%\LOG\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\LOG\README.lnk" "E:\OTDEL\%thePATH%\LOG\"
 
::****************************************
::*      Установка шапок для логов       *                              
::****************************************                            
 
if not exist "%LOG_OPER%\HISTORY_%year%.txt" (            
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
echo *   №   *    Дата    *  Время   * Отправлен     *  Значение ошибки       * Имя файла    * Размер файла     * Путь нахождения файла              * >>%LOG_OPER%\HISTORY_%year%.txt
echo * ящика *  отправки  * отправки * Не отправлен  *                        *              *                  *                                    * >>%LOG_OPER%\HISTORY_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
)                                                               
 
 
if not exist "%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
if not exist "%LOG_USER%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
::**************************************************************************************
 
           
 
::начинаем проверку всех директорий ОСБ на наличие файлов
echo ::начинаем проверку всех директорий ОСБ на наличие файлов
 
rem 
rem pause
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
 
 if not exist "E:\OTDEL\%thePATH%\OUT\OSB\%%a\" md "E:\OTDEL\%thePATH%\OUT\OSB\%%a\"
 set the_osb=%%a
 rem echo %%a
 rem pause
 set maska=????????
 rem echo Установили каталог проверки ОСБ # !the_osb!
 rem pause
   if not exist "%GOOD%\OSB\%%a\" md "%GOOD%\OSB\%%a\"
  rem задаем форматы дозволенных файлов поиска
 
  for %%b in (rtf,pdf,xls,txt,tif) do (
   for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.%%b" 2^>nul ^| findstr /i /r /c:"^........\.%%b$"') do (
     SET cc=%%c
 
    echo нашли файл %%c !!!!
    pause
    for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do SET jj=%%~zj
 
     if %%~zj lss %massa% (
 
     %SBERSIGN%\sbersign.exe /p  /l=%SET_SIGN%\sign.lst "%Put%\%thePATH%\OUT\OSB\%%a\%%c"                                                                   
     SET cc=%%c
 
     if errorlevel 1 ( 
     if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     call :mis_1) else ( 
     if not exist "%GOOD%\OSB\%%a" md "%GOOD%\OSB\%%a"
 
     if exist "%GOOD%\OSB\%%a\%%c" ( for %%j in ("%GOOD%\OSB\%%a\%%c") do set kk=%%~zj
     call :mis_7) 
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\OSB\%%a\"
     call :mis_2)
     ) else ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3)
     
 
    )
   ) 
 
  echo Переходим дальше на ARj
  pause
 
 
 
 
 
  rem Задаем формат архива ARJ для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.arj" 2^>nul ^| findstr /i /r /c:"^........\.arj$" ') do (
   rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do  set jj=%%~zj
     SET cc=%%c
     rem echo установили файл сейчас пойдет распаковка
    rem pause
     if %%~zj lss %massa% (
     %ARC%\arj32.exe e -y !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     rem echo распаковали
    rem pause
     call :temp_extr
     ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
        call :mis_3 ) 
    
   )
 
  echo Переходим дальше на zip
  pause
 
 
 
  rem Задаем формат архива ZIP для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.zip" 2^>nul ^| findstr /i /r /c:"^........\.zip$" ') do (
   echo сейчас должно написать !
pause
   rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
echo написало
pause
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
      %ARC%\pkzip25.exe -over=all -extract !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
      call :temp_extr
      ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3 )
    )
   )
 
 
  echo Переходим дальше на RAR
  pause
 
 
  rem Задаем формат архива RAR для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.rar" 2^>nul ^| findstr /i /r /c:"^........\.rar$" ') do (
   rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\Rar.exe e -y %ARJ% %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
     ) else (
 
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3 ) 
    )
   )
 
  echo Переходим дальше на DOC
  pause
 
 
  rem Задаем формат архива DOC для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.doc" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set DOC="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOC! %%a
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOC! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_4 )
 
  echo Переходим дальше на DOCX
  pause
 
 
  rem Задаем формат архива DOCX для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.docx" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set DOCX="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOCX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOCX! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_5) 
 
 
  echo Переходим дальше на XLSX
  pause
 
  rem Задаем формат архива XLSX для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.xlsx" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set XLSX="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !XLSX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !XLSX! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_10)    
 
 echo проверка на наличие мусора
  pause
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.*" 2^>nul') do (
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do set jj=%%~zj
   set cc=%%c
   set ALL="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ALL!доработать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   rem pause
   if not exist %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\ md %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\
   echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c"  "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_6)
 
 
 
 
 
 
  
 )
 
 
 
 
rem echo Выполнили программу просмотра всех каталогов ящика №%thePATH%
rem pause
 
 
goto end
  
:mis_1
 
:m1
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m1
)
 
rem echo * %S% *
rem pause
 
 
echo сейчас будет записан лог ошибки ЭЦП
rem pause
 
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Ошибка ЭЦП             * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%        * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b 
 
:mis_2
 
:m2
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m2
)
 
 
echo сейчас будет записан лог правильной эцп и перенос файла
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% *    Отправлен  * Ошибок нет             * %cc% * %jj%  * Отправлен в ОСБ № %the_osb%             * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause 
exit /b
 
:mis_3
 
 
:m3
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m3
)
 
 
echo сейчас будет записан лог файла превышающего размер
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Размер больше %massa% * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_4
 
 
:m4
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m4
)
 
 
echo сейчас будет записан лог файла DOC
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOC           * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
:mis_5
 
:m5
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m5
)
 
 
echo сейчас будет записан лог файла DOCX
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри *.DOCX          * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
 
 
:mis_6
:m6
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m6
)
 
echo сейчас будет записан лог файла не верно заданной маски
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Имя файла неверно      * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_7
 
 
:m7
set rr=%kk% стал %jj%
:m71
if "%rr:~21,1%"=="" (
set rr=%rr% 
goto m71
)
 
:m72
if "%kk:~14,1%"=="" (
set kk=%kk% 
goto m72
)
 
 
echo сейчас будет записан лог файла перезаписанного
rem pause                                                                                                                 
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Перезаписан   * Файл перезаписан       * %cc% * %kk%  * Был размера %rr% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause
exit /b
 
:mis_8
:m8
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m8
)
 
echo сейчас будет записан лог файла не верно заданного формата
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри архива *.DOC    * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause                                                                         
exit /b
 
:mis_9
:m9
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m9
)
 
echo сейчас будет записан лог файла не верно заданного формата
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри архива *.DOCX   * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause                                                                         
exit /b
 
 
:mis_10
:m10
if "%jj:~14,1%"=="" (
set jj=%jj% 
goto m10
)
 
echo сейчас будет записан лог файла XLSX
rem pause
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * Не отправлен  * Внутри архива *.XLSX   * %cc% * %jj%  * \%thePATH%\NOT_OUT\%out_time%\%the_osb%         * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
rem pause                                                                         
exit /b
 
 
 
:temp_extr
 
echo Распаковка найденных архивов
echo Перешли на распаковку
pause
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" 2^>nul') do (
 %ARC%\arj32.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" 2^>nul') do (
 %ARC%\pkzip25.exe -over=all -extract "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
for /f "delims=" %%d in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" 2^>nul') do (
 %ARC%\Rar.exe e -y "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d" %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP
 del "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\%%d"
 )
 
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" goto :temp_extr
 
 
 
rem echo Если находим DOC или DOCX производим выход и переносим архив в каталог для неотправки
rem pause
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.doc" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 echo Y|move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%"
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 call :mis_8
 exit /b
)
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.docx" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 echo Y|move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%"
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 call :mis_9
 exit /b
)
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.xlsx" (
 if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
 echo Y|move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%"
 rmdir /s /q %Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\
 call :mis_10
 exit /b
)                       
 
                       
 
rem echo Копируем все базы ключей
rem echo проверяем архивы на наличие ЭЦП
rem pause
copy  /y %SBERDATA_FROM%\sign.d04 %SBERDATA%\sign.dat >nul                  
echo ****************************************  >>%SET_SIGN%\sign.lst
echo * %ARJ% * >>%SET_SIGN%\sign.lst
echo ****************************************  >>%SET_SIGN%\sign.lst
 
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP"
%SBERSIGN%\sbersign.exe /p /l=%SET_SIGN%\sign.lst *.*
if errorlevel 1 (
if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
echo Y|move /y %ARJ% "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
call :mis_1) else (
if not exist "%GOOD%\OSB\%the_osb%\" md "%GOOD%\OSB\%the_osb%\"
echo Y|move /y %ARJ% "%GOOD%\OSB\%the_osb%\"
call :mis_2)
cd /d "%Put%\%thePATH%\OUT\OSB\%the_osb%"
rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\"
exit /b
 
 
:end
 
 
if not exist %LOG_OPER%\HISTORY_TEMP_%year%.txt  goto end11
echo добавляем информацию в историю и меняем кодировку 
chcp 866 >nul
for /f "tokens=*" %%x in (%LOG_OPER%\HISTORY_TEMP_%year%.txt) do call :convert %%x
if exist %LOG_OPER%\HISTORY_TEMP_%year%.txt del %LOG_OPER%\HISTORY_TEMP_%year%.txt  
goto end11
 
:convert
chcp 866 >nul
echo %*>>%LOG_OPER%\HISTORY_%year%.txt
chcp 1251 >nul
echo %*>>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo %*>>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
chcp 866 >nul
exit /b
 
 
:end11
echo Закончили обработку ОСБ Электронного ящика №%thePATH%
 
rem cls
rem goto start
rem pause
exit /b
Миниатюры
Exit /b :eof не переходит в конец файла  
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
17.11.2011, 23:51  [ТС]
Bash
1
if exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
и что неправильно вот здесь ? Смысл если есть такая папка то удалить эту папку с ее содержимым!

Добавлено через 13 минут
Bash
1
if exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
и что неправильно вот здесь ? Смысл если есть такая папка то удалить эту папку с ее содержимым!

Почему-то команда удаления папки находясь внутри цикла работает как-то не правильно

Да и вообще все что находится в цикле работает как-то все по другому

Добавлено через 4 минуты
Цитата Сообщение от atributz Посмотреть сообщение
у вас в коде написано findstr /i /r /c:"^..........*\.%%b$
а нужно findstr /i /r /c:"^........\.%%b$"
в общем вместо 10 точек и звездочки нужно восемь точек.

Добавлено через 1 час 26 минут

внутри соответствующего цикла придется завести переменную, которой будем ставить значение 1 если файл начинается с s100 и 0 если нет.
Code
1
2
3
4
5
6
7
8
9
10
11
set fs100=0
if %%b==txt (
set txtname=%%c
if "!txtname:~0,4!"=="s100" set fs100=1
)
if !fs100!==0 (
::тут ваши стандартные действия для файлов
)
if !fs100!==1 (
::тут ваши действия для файлов s100????.txt
)

а как быть с файлами типа

****rrtt.arj


???????

Добавлено через 27 минут
И вот еще вопрос столкнулся с проблемой по алгоритму сначала находятся все файлы, по маскам, по разрешениям, потом начинают проверяться архивы.

И вот как раз получается такой вариант когда пользователь может положить файл в момент когда закончились проверяться все обычные файлы и стали проверяться все архивы и по алгоритму получаются они просто выкинутся в каталог не отправленных файлов.

Как лучше поступить ?
Я думал что б первая команда забирала все в директорию к которой не имеет доступа пользователь и там уже все колбасить, и если что не так возвращать пользователю обратно ! какие еще могут быть варианты ?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
18.11.2011, 07:47
Цитата Сообщение от wildwolf007 Посмотреть сообщение
не могу понять что он не может найти ?????????????
Это сообщение от 276 строки RMDIR /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
Когда папки TEMP нет он пишет "не удается найти указанный файл".
Чтобы убрать из вывода эти сообщения напишите
RMDIR /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" 2>nul

Добавлено через 5 минут
Ну вы папку TEMP удаляете (в 276 строке например) а в следующей строке создаете может поэтому вам и кажется что не работает.

Добавлено через 2 минуты
Цитата Сообщение от wildwolf007 Посмотреть сообщение
а как быть с файлами типа
****rrtt.arj
вы можете сразу сказать много у вас таких проверок будет?
а то если много то лучше их все сразу делать а так по одной код слишком большой получится.

Добавлено через 10 минут
Цитата Сообщение от wildwolf007 Посмотреть сообщение
И вот еще вопрос столкнулся с проблемой по алгоритму сначала находятся все файлы, по маскам, по разрешениям, потом начинают проверяться архивы.

И вот как раз получается такой вариант когда пользователь может положить файл в момент когда закончились проверяться все обычные файлы и стали проверяться все архивы и по алгоритму получаются они просто выкинутся в каталог не отправленных файлов.

Как лучше поступить ?
Я думал что б первая команда забирала все в директорию к которой не имеет доступа пользователь и там уже все колбасить, и если что не так возвращать пользователю обратно ! какие еще могут быть варианты ?
Ну значит надо менять ваш алгоритм.
В конце нужно обрабатывать не все файлы а выбирать какие не подходят по условиям в начале.
Но в этом случае конечно надо быть аккуратным. Если меняете алгоритм выбора файлов в начале то и в конце тоже надо будет менять.

Добавлено через 39 минут
Вообще если подумать нужно полностью поменять алгоритм.
Надо выбирать файлы тогда не по фильтрам, а брать все по очереди.
И вручную смотреть подходит он по параметрам или нет. Тогда проблем с добавлением файлов во время обработки не будет. Агоритм несколько усложнится но не намного.

Добавлено через 1 час 24 минуты
Напишите только по нормальному какие файлы и как нужно обрабатывать а то в вашем коде который меняется разбираться очень долго и он скорее всего еще и не так работает как нужно.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
18.11.2011, 08:40  [ТС]
Файлы исключений не много я думаю будет ну максимум 5 !

По поводу алгоритма просто создать отдельную директорию и туда уже переносить все файлы в папку не доступную для пользователей ?

Добавлено через 3 минуты
Ну а если усложнять алгоритм то получается необходимо просто еще добавить еще один цикл FOR который будет брать файл и передавать другому Фору в свою очередь фор просматривает по фильтрам и если файл не прошел не по одному фильтру то после всех фильтров стоит одна команда которая отметает этот файл в другую директорию !

Добавлено через 3 минуты
Ну опять-таки остается вопрос что если пользователь начнет производить какие-то изменения над файлом (файлы типа PDF RTF XLS ) и батнику просто неудастся произвести перенос этого файла так как пользователь производит его редактирование, он так и останется в этой директории !

Добавлено через 7 минут
Сообщение от wildwolf007
а как быть с файлами типа
****rrtt.arj
вы можете сразу сказать много у вас таких проверок будет?
а то если много то лучше их все сразу делать а так по одной код слишком большой получится.

Напишите только по нормальному какие файлы и как нужно обрабатывать а то в вашем коде который меняется разбираться очень долго и он скорее всего еще и не так работает как нужно.

Напишу блок схему что б сразу было попонятней а то и вправду я постоянно добалвяю всякие проверки. Да и алгоритм обработки нуна наверное еще и написать в виде блок схемы т.к. потом все это можно будет переписать на любой другой язык программирования.

Написать по нормальному не получится потому что я не знаю какие будут файлы добавляться я так предполагаю что будет типа условия IF номер ящика такой-то значит задействовать маски такие-то такие-то....
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
19.11.2011, 23:52  [ТС]
Чувствую алгоритм придется менять еще потому что, что б исключить вариант того что пользователь может открыть документ и редактировать. Я думаю можно простой проверкой на переименование файла.

1. Проверяем на возможность переименования
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) do (
 
 if not exist "E:\OTDEL\%thePATH%\OUT\OSB\%%a\" md "E:\OTDEL\%thePATH%\OUT\OSB\%%a\"
 set the_osb=%%a
 rem echo %%a
 rem pause
 set maska=????????
 rem echo Установили каталог проверки ОСБ # !the_osb!
 rem pause
   if not exist "%GOOD%\OSB\%%a\" md "%GOOD%\OSB\%%a\"
  rem задаем форматы дозволенных файлов поиска
rem :end_for
dir /a-d /b "E:\OTDEL\%thePATH%\OUT\OSB\%%a" 1>nul 2>nul  && (
 
 
for /f "delims=" %%w in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.*"') do (
  set name=%%~nw
  echo Нашли файл имени  %%~nw
  pause
  echo Нашли файл имени  !name!
  pause
 
  
  
  for %%b in (rtf,pdf,xls,txt,tif) do (
   
   for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.%%b" 2^>nul ^| findstr /i /r /c:"^........\.%%b$"') do (
    
     SET cc=%%c
 
    echo нашли файл %%c !!!!
    pause
    for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do SET jj=%%~zj
 
     if %%~zj lss %massa% (
 
     %SBERSIGN%\sbersign.exe /p  /l=%SET_SIGN%\sign.lst "%Put%\%thePATH%\OUT\OSB\%%a\%%c"                                                                   
     SET cc=%%c
 
     if errorlevel 1 ( 
     if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
     call :mis_1 ) else ( 
     if not exist "%GOOD%\OSB\%%a" md "%GOOD%\OSB\%%a"
 
     if exist "%GOOD%\OSB\%%a\%%c" ( for %%j in ("%GOOD%\OSB\%%a\%%c") do set kk=%%~zj
     call :mis_7
     
     ) 
     echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\OSB\%%a\"
     call :mis_2 )
     ) else ( if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /Y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3 )
     
 
    )
    
   ) 
  
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
 
  echo Переходим дальше на ARj
   pause
 
 
 
 
  
  rem Задаем формат архива ARJ для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.arj" 2^>nul ^| findstr /i /r /c:"^........\.arj$" ') do (
   rem rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
 
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   attrib +H "%Put%\%thePATH%\OUT\OSB\%%a\TEMP"
   echo установили скрытую папку
   rem pause
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do  set jj=%%~zj
     SET cc=%%c
     echo установили файл сейчас пойдет распаковка
    rem pause
     if %%~zj lss %massa% (
     %ARC%\arj32.exe e -y !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     rem echo распаковали
    rem pause
     call :temp_extr
     ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
        call :mis_3 ) 
    
   )
 
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
 
   
  echo Переходим дальше на zip
  rem pause
 
 
  
  rem Задаем формат архива ZIP для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.zip" 2^>nul ^| findstr /i /r /c:"^........\.zip$" ') do (
   echo сейчас должно написать !
 pause
   rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
echo написало
 pause
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
      %ARC%\pkzip25.exe -over=all -extract !ARJ! %Put%\%thePATH%\OUT\OSB\%%a\TEMP
      call :temp_extr 
       ) else (
           
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3  )
    )
   )
   
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
 
 
  echo Переходим дальше на RAR
   pause
 
  
  rem Задаем формат архива RAR для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.rar" 2^>nul ^| findstr /i /r /c:"^........\.rar$" ') do (
   rmdir /s /q "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   if not exist "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\" md "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
   set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !ARJ!
   rem pause
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do (
     SET cc=%%c
     set jj=%%~zj
     if %%~zj lss %massa% (
     %ARC%\Rar.exe e -y %ARJ% %Put%\%thePATH%\OUT\OSB\%%a\TEMP
     call :temp_extr
      ) else (
 
        if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
        call :mis_3  ) 
    )
   )
 
 
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
   
  echo Переходим дальше на DOC
  pause
 
  
  rem Задаем формат архива DOC для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.doc" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set DOC="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOC! %%a
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOC! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_4  )
   )
 
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
 
  echo Переходим дальше на DOCX
   pause
 
  if %%w==%%~nw.docx (
  rem Задаем формат архива DOCX для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.docx" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set DOCX="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !DOCX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !DOCX! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_5 )    
 
 
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for   
 
  echo Переходим дальше на XLSX
   pause
  
  rem Задаем формат архива XLSX для поиска
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%~nw.xlsx" 2^>nul') do (
   SET cc=%%c
   set jj=%%~zc
   set XLSX="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   rem echo Нашли !XLSX!
   rem pause
   if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\" 
   echo Y|move /y !XLSX! "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   call :mis_10 )   
   
rem if not exist "%Put%\%thePATH%\OUT\OSB\%%a\%%w" goto end_for
 
 echo проверка на наличие мусора
   pause
  for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\%%w" 2^>nul') do (
   for %%j in ("%Put%\%thePATH%\OUT\OSB\%%a\%%c") do set jj=%%~zj
   set cc=%%c
   set ALL="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   echo Нашли !ALL!доработать!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
   pause
   if not exist %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\ md %Put%\%thePATH%\NOT_OUT\%out_time%\%%a\
   echo Y|move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c"  "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\"
   echo 1
pause
   call :mis_6
echo вернулись
pause
 )
 
  echo первая скобка 
pause
 
 
 
 
 
  
 )
echo Вторая скобка
pause
 )
 )
Добавлено через 2 часа 6 минут
Краткое описание работы алгоритма. Прошу не ругать за такое исполнение оформить не было времени
Что б много времени не терять.

1й for устанавливаем имена файлов из директории

rem Сначало проверяем на фильтр исключений
rem Условия исключений будет зависеть как я понимаю от IF
IF №ящика ==900 (
проверяем на исключения файлы типа

IF RR??1234.060 == имя файла (для них отдельная песня)

)
после фильтра исключений пошли по другим фильтрам проверять

2й for подставляем имена файлов и проверяем на RTF XLS TXT TIF
здесь еще нужно установить проверку на, со сменой имени файла что б удостовериться свободен файл или занят пользователем (открыт пользователем)

Ну как- то так но внутри FOR не получается
Windows Batch file
1
2
3
4
5
6
7
8
:test
if exist c:\1.txt goto go
sleep 10
goto test
:go
rename c:\1.txt 1.txt
if not errorlevel 0 goto go
del c:\1.txt

проверяет размер файла
проверяет на ЭЦП
в случае удачной проверки переносит в правильную директорию
в случае какой-либо ошибки возвращает обратно пользователю на доработку

3,4,5 й for проверяем arj rar zip
проверяет размер файла
распаковываем во временную директорию TEMP и проверяем содержимое директории на ЭЦП и на запретные файлы DOC DOCX XLSX

в случае удачной проверки переносит в правильную директорию и пишем лог
в случае какой-либо ошибки возвращает обратно пользователю на доработку и пишем лог



6,7,8 првоеряем на XLSX DOC DOCX выкидываем в директорию с ошибкой и пишем лог

9й for если файл не провел ни по одному фильтру то выкидываем файл в директорию с ошибкой и пишем лог


здесь везде работаем именно с именем так вот проблема в том что б выходить из первого фора (завершать этап для файла) в случае определения какого либо правила выходим и переходим первым фором на следующий файл.

Пробовал Exit /b чето не так работает как я хочу.

так же получается так что если два RTF документа проверяет первый и выходит из цикла и на следующем проходе проверяет следующий.



Может использовать другой алгоритм ??????? Или дополнить и исправить этот....???
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
20.11.2011, 03:56
так если такой алгоритм зачем надо было проверять на размер имени в ровно 8 символов?
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
20.11.2011, 11:20  [ТС]
Здесь получается что первый фор просто берет все файлы, а фильтры внутри цикла уже для себя проверяют все необходимые решения по определенным правилам. Если не проходит не по одному фильтру то все отметает последний фор. Ровно 8 символов это необходимое условие для дальнейшей маршрутизации файла.
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
21.11.2011, 16:30
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
echo ON
 
 
setlocal enabledelayedexpansion
::SET thePATH=%1
SET thePATH=900
echo Проверка ящика номер %thePATH% 
 
 
rem Устанавливаем время срабатывания батника
::**************************************************************************************
set dd=%date%
set tt=%time%
FOR /f "tokens=1-3 delims=-./" %%i in ("%dd%") DO (
set day=%%i
set month=%%j
set year=%%k
)
IF "%day:~2,1%"==" " set day=%day:~3,2%
set t=%day%
IF NOT "%day:~2,1%"=="" (
set day=%year%
set year=%t% )
IF "%year:~2,1%"=="" set year=20%year%
set hour=%tt:~0,2%
IF "%hour:~0,1%"=="0" (set /a hour=%hour:~1%) ELSE (set /a hour=%hour%)
IF %hour% lss 10 set hour=0%hour%
set minute=%tt:~3,2%
set sec=%tt:~6,2%
set out_time=%day%%month%%hour%%minute%
 
 
rem echo установили дату 
rem pause
 
::Устанавливаем пути доступа
::*************************************************************************************
rem SET thePATH=%1
 
rem устанавливаем максимальный размер отправляемых файлов
SET massa=20971520
 
 
rem Устанавливаем путь отправки временно !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
rem SET GOOD=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
SET GOOD=E:\SERVER\BAT\AUTO_TECOS\COLECTOR.PRO\OUT
 
rem Устанавливаем путь для ARJ32.exe PKZIP25.EXE Rar.exe архиваторов 
rem SET ARC=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\ARC
SET ARC=E:\SERVER\BAT\AUTO_TECOS\ARC
 
 
::**************************************************************************************
 
rem Устанавливаем путь для SBERSIGN
rem SET SBERSIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERSIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s
             
 
rem Устанавливаем путь для хранения базы ключей Sbersign
rem SET SBERDATA=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s
SET SBERDATA=E:\SERVER\BAT\AUTO_TECOS\sign_s
 
rem Устанавливаем путь для доступа к ящикам
rem set PUT=\\Postal\ORG_MAIL\OTDEL
SET PUT=E:\OTDEL
rem echo %Put%
rem pause
 
::Установка путей логов
::**************************************************************************************
 
rem  Устанавливаем путь лога для ящиков 
rem SET LOG_USER=\\Postal\ORG_MAIL\OTDEL\%thePATH%\LOG
SET LOG_USER=E:\OTDEL\%thePATH%\LOG
 
rem  Устанавливаем путь лога для оператора
rem SET LOG_OPER=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\LOG
SET LOG_OPER=E:\SERVER\BAT\AUTO_TECOS\LOG
 
rem  Устанавливаем путь лога для ящиков TEMP
SET LOG_USER_TEMP=E:\SERVER\BAT\AUTO_TECOS\LOG\LOG_OTD
 
rem /l= путь для лога Sbersign
rem SET SET_SIGN=\\Postal\ORG_MAIL\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
SET SET_SIGN=E:\SERVER\BAT\AUTO_TECOS\sign_s\SIGN_LOG
 
 
 
::**************************************************************************************
 
 
 
IF NOT exist "E:\OTDEL\%thePATH%" CALL :start
 
 
 
rem echo начинаем просмотр ящиков
rem pause
FOR %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) DO (
dir /a-d /b "E:\OTDEL\%thePATH%\OUT\OSB\%%a" 1>nul 2>nul  && (
GOTO start)
)
FOR %%y in (0034.050) DO (
IF NOT exist "E:\OTDEL\%thePATH%\OUT\MOSCOW\%%y\" md "E:\OTDEL\%thePATH%\OUT\MOSCOW\%%y\"
::"end if
dir /a-d /b "E:\OTDEL\900\OUT\MOSCOW\%%y" 1>nul 2>nul  && (
echo запуск MOSCOW
GOTO start)
 
)
echo Закончили обработку ОСБ Электронного ящика №%thePATH%
EXIT /b
 
 
:start
 
 
                                
 
rem IF %thePTH%==010 ( IF NOT exist "E:\OTDEL\%thePATH%\OUT\Moscow\Transport_packet\" md "E:\OTDEL\%thePATH%\OUT\Moscow\Transport_packet\")
 
 
:: Создаем структуру для Электронного ящика № %thePATH%
::**************************************************************************************
IF NOT exist "E:\OTDEL\%thePATH%\" md "E:\OTDEL\%thePATH%"
IF NOT exist "E:\OTDEL\%thePATH%\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\README.lnk" "E:\OTDEL\%thePATH%\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для IN
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\IN\" md "E:\OTDEL\%thePATH%\IN\"
IF NOT exist "E:\OTDEL\%thePATH%\IN\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\IN\README.lnk" "E:\OTDEL\%thePATH%\IN\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для OUTPUT
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\OUTPUT\" md "E:\OTDEL\%thePATH%\OUTPUT\"
IF NOT exist "E:\OTDEL\%thePATH%\OUTPUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\OUTPUT\README.lnk" "E:\OTDEL\%thePATH%\OUTPUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для ARJ_PACK
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\ARJ_PACK\1_Папка_для_архивации\" md "E:\OTDEL\%thePATH%\Arj_pack\1_Папка_для_архивации\"
IF NOT exist "E:\OTDEL\%thePATH%\ARJ_PACK\2_Готовый_архив\" md "E:\OTDEL\%thePATH%\Arj_pack\2_Готовый_архив\"
IF NOT exist "E:\OTDEL\%thePATH%\ARJ_PACK\ARJ_PACK.bat" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\ARJ_PACK\ARJ_PACK.bat" "E:\OTDEL\%thePATH%\ARJ_PACK\"
IF NOT exist "E:\OTDEL\%thePATH%\ARJ_PACK\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\ARJ_PACK\README.lnk" "E:\OTDEL\%thePATH%\ARJ_PACK\"
 
::**************************************************************************************
 
   
 
:: Создаем структуру для OUT
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\OUT\" md "E:\OTDEL\%thePATH%\OUT\"
IF NOT exist "E:\OTDEL\%thePATH%\OUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\OUT\README.lnk" "E:\OTDEL\%thePATH%\OUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для NOT_OUT
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\NOT_OUT\" md "E:\OTDEL\%thePATH%\NOT_OUT\"
IF NOT exist "E:\OTDEL\%thePATH%\NOT_OUT\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\NOT_OUT\README.lnk" "E:\OTDEL\%thePATH%\NOT_OUT\"
 
::**************************************************************************************
 
 
 
:: Создаем структуру для LOG
::**************************************************************************************
 
IF NOT exist "E:\OTDEL\%thePATH%\LOG\" md "E:\OTDEL\%thePATH%\LOG\"
IF NOT exist "E:\OTDEL\%thePATH%\LOG\README.lnk" copy "E:\SERVER\BAT\AUTO_TECOS\BAT\LINK\LOG\README.lnk" "E:\OTDEL\%thePATH%\LOG\"
 
::****************************************
::*      Установка шапок для логов       *                              
::****************************************                            
 
IF NOT exist "%LOG_OPER%\HISTORY_%year%.txt" (            
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
echo *   №   *    Дата    *  Время   * Отправлен     *  Значение ошибки       * Имя файла    * Размер файла     * Путь нахождения файла              * >>%LOG_OPER%\HISTORY_%year%.txt
echo * ящика *  отправки  * отправки * Не отправлен  *                        *              *                  *                                    * >>%LOG_OPER%\HISTORY_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_OPER%\HISTORY_%year%.txt
)                                                               
 
 
IF NOT exist "%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
IF NOT exist "%LOG_USER%\HISTORY_%thePATH%_%year%.txt" (
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo *   ╣   *    ─рЄр    *  ┬Ёхь*   * ╬ЄяЁртыхэ     *  ╟эрўхэшх ю°шсъш       * ╚ь* Їрщыр    * ╨рчьхЁ Їрщыр     * ╧єЄ№ эрїюцфхэш* Їрщыр              * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo * *∙шър *  юЄяЁртъш  * юЄяЁртъш * ═х юЄяЁртыхэ  *                        *              *                  *                                    * >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
echo ************************************************************************************************************************************************* >>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
)                                                                                                              
 
::**************************************************************************************
 
           
 
::начинаем проверку всех директорий ОСБ на наличие файлов
for %%a in (0030,1583,1587,1811,1812,1856,1857,1858,1859,1860,1861,1872,5230,5231,5232,5238,5239,5241,7799,7908,8579,8585,8590,8631,8632,8633,8643,KRAY,Respubliki,DO_137,OPERU,Vsem_OSB) DO (
if not exist "%put%\%thePATH%\OUT\OSB\%%a\" md "%put%\%thePATH%\OUT\OSB\%%a\"
set the_osb=%%a
for %%b in ("%put%\%thePATH%\OUT\OSB\%%a\*.*") do (
set file_ext=%%~xb
set file_name=%%~nb
set file_size=%%~zb
set file_path=%%~dpb
set file_fullname=%%b
::запоминаем параметры файла и переходим в основную функцию обработки
call :main
)
)
GOTO END
 
::основная функция обработки main
:main
 
::если файл заблокирован пропускаем его
ren "%file_fullname%" *
if errorlevel 1 exit /b
 
::если в имени файла не 8 символов отбрасываем
if "%file_name:~7,1%"=="" (
call :otbr "Имя файла неверно"
exit /b
)
if not "%file_name:~8,1%"=="" (
call :otbr "Имя файла неверно"
exit /b
)
 
::"если файл больше заданного размера отбрасываем
if %file_size% gtr %massa% (
call :otbr "Размер больше %massa%"
exit /b
)
 
::если файл формата rtf,pdf,xls,txt,tif проверяем подпись
echo %file_ext%|findstr /i /r /c:"^\.rtf$" /c:"^\.pdf$" /c:"^\.xls$" /c:"^\.txt$" /c:"^\.tif$" >nul && (
call "%SBERSIGN%\sbersign.exe" /p /l=%SET_SIGN%\sign.lst "%file_fullname%"
if errorlevel 1 (
call :otbr "Ошибка ЭЦП"
exit /b
) else (
call :good
exit /b
)
)
 
::если архив ARJ
if /i %file_ext%==.arj (
if exist "%file_path%TEMP\" rmdir /s /q "%file_path%TEMP\"
md "%file_path%TEMP"
::распаковываем
"%ARC%\arj32.exe" e -y "%file_fullname%" "%file_path%TEMP"
call :temp_extr
exit /b
)
 
::если архив ZIP
if /i %file_ext%==.zip (
if exist "%file_path%TEMP\" rmdir /s /q "%file_path%TEMP\"
md "%file_path%TEMP"
::"распаковываем
"%ARC%\pkzip25.exe" -over=all -extract "%file_fullname%" "%file_path%TEMP"
call :temp_extr
exit /b
)
 
::если архив RAR
if /i %file_ext%==.zip (
if exist "%file_path%TEMP\" rmdir /s /q "%file_path%TEMP\"
md "%file_path%TEMP"
::"распаковываем
"%ARC%\Rar.exe" e -y "%file_fullname%" "%file_path%TEMP"
call :temp_extr
exit /b
)
 
::если документ doc отбрасываем
if /i %file_ext%==.doc (
call :otbr "файл DOC"
exit /b
)
 
::если документ docx отбрасываем
if /i %file_ext%==.docx (
call :otbr "файл DOCX"
exit /b
)
 
::если архив xlsx отбрасываем
if /i %file_ext%==.xlsx (
call :otbr "файл XLSX"
exit /b
)
 
::если какой то другой файл отбрасываем
call :otbr "Имя файла неверно"
exit /b 
::конец основной функции обработки main
 
 
:temp_extr
::Распаковка найденных архивов
for /f "delims=" %%d in ('dir /a-d /b "%file_path%TEMP\*.arj" 2^>nul') do (
"%ARC%\arj32.exe" e -y "%file_path%TEMP\%%d" "%file_path%TEMP"
del "%file_path%TEMP\%%d"
)
for /f "delims=" %%d in ('dir /a-d /b "%file_path%TEMP\*.zip" 2^>nul') do (
"%ARC%\pkzip25.exe" -over=all -extract "%file_path%TEMP\%%d" "%file_path%TEMP"
del "%file_path%TEMP\%%d"
)
for /f "delims=" %%d in ('dir /a-d /b "%file_path%TEMP\*.rar" 2^>nul') do (
"%ARC%\Rar.exe" e -y "%file_path%TEMP\%%d" "%file_path%TEMP"
del "%file_path%TEMP\%%d"
)
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.arj" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.zip" goto :temp_extr
if exist "%Put%\%thePATH%\OUT\OSB\%the_osb%\TEMP\*.rar" goto :temp_extr
 
::Если находим DOC или DOCX производим выход и переносим архив в каталог для неотправки
if exist "%file_path%TEMP\*.doc" (
call :otbr "Содержит DOC"
exit /b
)
if exist "%file_path%TEMP\*.docx" (
call :otbr "Содержит DOCX"
exit /b
)
if exist "%file_path%TEMP\*.xlsx" (
call :otbr "Содержит XLSX"
exit /b
)
 
::echo Копируем все базы ключей
::echo проверяем архивы на наличие ЭЦП
copy  /y %SBERDATA_FROM%\sign.d04 %SBERDATA%\sign.dat >nul
echo ****************************************  >>%SET_SIGN%\sign.lst
echo * %ARJ% * >>%SET_SIGN%\sign.lst
echo ****************************************  >>%SET_SIGN%\sign.lst
 
cd /d "%file_path%TEMP"
%SBERSIGN%\sbersign.exe /p /l=%SET_SIGN%\sign.lst *.*
if errorlevel 1 (call :otbr "Ошибка ЭЦП") else (call :good)
exit /b
::конец распаковки и выход
 
::перемещение не подошедшего файла
:otbr
call :log "Не отправлен" "%~1" "\%thePATH%\NOT_OUT\%out_time%\%the_osb%"
if not exist "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" md "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\" 
echo Y|move /Y "%file_fullname%" "%Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\"
if errorlevel 1 (call :log "Отмена" "Ошибка записи" "Код ошибки %errorlevel%")
exit /b
::конец перемещения
 
::перемещение хорошего файла
:good
if not exist "%GOOD%\OSB\%the_osb%" md "%GOOD%\OSB\%the_osb%"
if exist "%GOOD%\OSB\%the_osb%\%file_name%%file_ext%" (
for %%j in ("%GOOD%\OSB\%the_osb%\%file_name%%file_ext%") do set old_size=%%~zj
call :log "Перезаписан" "Файл перезаписан" "Был размера %old_size% стал %file_size%"
) else (
call :log "Отправлен" "Ошибок нет" "Отправлен в ОСБ № %the_osb%"
)
echo Y|move /Y "%file_fullname%" "%GOOD%\OSB\%the_osb%\"
if errorlevel 1 (call :log "Отмена" "Ошибка записи" "Код ошибки %errorlevel%")
exit /b
::конец перемещения
 
::пишем лог
:log
::12,22,34
set par1=%~1
:log_1
if "%par1:~11,1%"=="" (
set par1=%par1% 
goto log_1
)
set par2=%~2
:log_2
if "%par2:~21,1%"=="" (
set par2=%par2% 
goto log_2
)
set par3=%~3
:log_3
if "%par3:~33,1%"=="" (
set par3=%par3% 
goto log_3
)
set par4=%file_size%
:log_4
if "%par4:~14,1%"=="" (
set par4=%par4% 
goto log_4
)
::"
set dd=%date%
set tt=%time%
FOR /f "tokens=1-3 delims=-./" %%i in ("%dd%") DO (
set day=%%i
set month=%%j
set year=%%k
)
IF "%day:~2,1%"==" " set day=%day:~3,2%
set t=%day%
IF NOT "%day:~2,1%"=="" (
set day=%year%
set year=%t% )
IF "%year:~2,1%"=="" set year=20%year%
set hour=%tt:~0,2%
IF "%hour:~0,1%"=="0" (set /a hour=%hour:~1%) ELSE (set /a hour=%hour%)
IF %hour% lss 10 set hour=0%hour%
set minute=%tt:~3,2%
set sec=%tt:~6,2%
 
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * %par1% * %par2% * %file_name%%file_ext% * %par4% * %par3% * >>%LOG_OPER%\HISTORY_TEMP_%year%.txt
exit /b
::заканчиваем писать лог
 
:END
IF NOT exist %LOG_OPER%\HISTORY_TEMP_%year%.txt  GOTO end11
echo добавляем информацию в историю и меняем кодировку 
chcp 866 >nul
FOR /f "tokens=*" %%x in (%LOG_OPER%\HISTORY_TEMP_%year%.txt) DO CALL :convert %%x
IF exist %LOG_OPER%\HISTORY_TEMP_%year%.txt del %LOG_OPER%\HISTORY_TEMP_%year%.txt  
GOTO end11
 
:convert
chcp 866 >nul
echo %*>>%LOG_OPER%\HISTORY_%year%.txt
chcp 1251 >nul
echo %*>>%LOG_USER_TEMP%\HISTORY_%thePATH%_%year%.txt
echo %*>>%LOG_USER%\HISTORY_%thePATH%_%year%.txt
chcp 866 >nul
EXIT /b
 
:end11
echo Закончили обработку ОСБ Электронного ящика №%thePATH%
EXIT /b
вот исходный вариант, теперь надо это все протестить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.11.2011, 16:30

Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла
3)Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла.

Даны два текстовых файла. Добавить в конец каждой строки первого файла соответствующую строку второго файла
Нужна помощь с самим модулем,с загрузкой и сохранением файлов все в принципе понятно.

При чтении из файла последние данные считываются дважды !? eof() ?
Есть следующий код: std::ifstream fin("ParentList", std::ios::binary); QString str; while(!fin.eof()) { ...

При построчном чтении файла eof наступает раньше срока
Здравствуйте, товарищи! Столкнулся с такой проблемой: при построчном потоковом чтении файла (при помощи getline) бит eof...

std::cin, eof не всегда принимается как признак конца файла
std::string text; char ch = 0; while(!std::cin.get(ch).eof()){ text.append(1, ch); } Ввожу в консоль в Windows: ...


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
сукцессия 41
anaschu 24.07.2026
Численная верификация бифуркации в агентной модели лесной сукцессии: от одного параметра к ансамблю Автор: пользователь @Shumilov_AS | Раздел: Прикладная математика / Численные методы Кратко. . .
сукцессия 40. Ансамблевая кластерная параметризаци, часть 1.
anaschu 24.07.2026
Пр# Сопровождение научной статьи ИИ-ассистентом: подготовка публикации и калибровка агентно-ориентированной модели сукцессии микоризных систем **Полевые заметки о двухнедельной совместной работе**. . .
Теория всего 12. ВГК на планете в стратегической игре "терра"
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru