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

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

28.10.2011, 22:14. Показов 21264. Ответов 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
01.11.2011, 23:19  [ТС]
Студворк — интернет-сервис помощи студентам
Если у нас существует файл в одной директории, такой же как и в той директории откуда производим перемещение (одинаковая маска) запрашивает вопрос на подтверждение после ответа YES все равно пишет что не удалось переместить как быть ?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
for %%a in (0030,0137,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,Respubl,Vsem_OSB) do (
set the_osb=%%a
 if not exist "%SEND_OSB%\%%a\" md "%SEND_OSB%\%%a\"
 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') do (
   %SBERSIGN%\sbersign.exe /p  /l=%LOG%\new_sign.txt "%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   if errorlevel 1 (move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\") else (move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\%%a\")
   echo забрали файл "%Put%\%thePATH%\OUT\OSB\%%a\%%c"
   pause
))
Миниатюры
Exit /b :eof не переходит в конец файла  
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
01.11.2011, 23:35  [ТС]
что означает символ ! !

Windows Batch file
1
2
3
4
set ARJ="%Put%\%thePATH%\OUT\OSB\%%a\%%c"
  %ARC%\arj32.exe e -y !ARJ! "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
 echo Нашли архив "%Put%\%thePATH%\OUT\OSB\%%a\TEMP\"
 echo !ARJ!
самое главное ничего не выводит
и не могу произвести распаковку
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
01.11.2011, 23:50  [ТС]
Вот скрин работы
Миниатюры
Exit /b :eof не переходит в конец файла  
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
02.11.2011, 02:01
setlocal enabledelayedexpansion
отложенное раскрытие переменных
почитайте уже FAQ по батникам пункт Как можно избежать использования goto?

если переменные внутри цикла нужно либо использовать вызов процедур чтобы работало
либо писать параметр setlocal enabledelayedexpansion и вместо % в этих переменных используем !

Добавлено через 1 минуту
когда циклов много все таки проще использовать setlocal enabledelayedexpansion а то получается очень много функций и путаницы много.

Добавлено через 1 час 30 минут
вообще то все выводится правильно, и это видно на вашем рисунке
просто в коде переменная !! не раскрывается
а при выводе echo пишется верно
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
02.11.2011, 02:05
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
02.11.2011, 02:08
у вас по-моему файл arj32.exe по указанному пути не найден.
1
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
03.11.2011, 20:48  [ТС]
не могу заставить твой код проверять на размер
раньше я делал так
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cls
 
goto start
:p
set dr=%~z1
rem pause
echo %dr%
rem pause 
if %dr% lss 10485760 move %1 c:\2\ 
rem pause
exit /b
 
:start
if not exist c:\2 md c:\2
if not exist c:\2\1 md c:\2\1
for /f "delims=" %%i in ('dir /a-d /b c:\1\*.*') do call :p "c:\1\%%i" 
 
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
goto 999
:x
echo установка даты
set dd=%DATE%
set tt=%TIME%
set /a ddd=%dd:~0,2%
IF %ddd% lss 10 (
SET day=0%ddd%) else (
SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%
set /a ttt=%tt:~0,2%
IF %ttt% LSS 10 (
 SET hour=0%ttt%) else (
 SET hour=%ttt%)
SET minute=%tt:~3,2%
SET sec=%tt:~6,2%
echo %day% %month% %year% %hour% %minute% %sec%
set out_time=%day%%month%%hour%%minute%
echo %out_time%
pause
set name_of_file=%~nx1
echo %name_of_file%
set razmer=%~z1
if not exist %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\ md %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%\
move /y %1  %Put%\%thePATH%\NOT_OUT\%out_time%\%the_osb%
rem лог Ящик                                                                       
echo 7 * %thePATH% * %day%.%month%.%year% * %hour%.%minute%.%sec% * %name_of_file% * Не отправлен   * Имя не корректно * %razmer% * \%thePATH%\NOT_OUT\%out_time%\%the_osb% >>%LOG%\History_%thePATH%_%year%.txt
rem лог Оператор
echo 7 * %thePATH% * %day%.%month%.%year% * %hour%.%minute%.%sec% * %name_of_file% * Не отправлен   * Имя не корректно * %razmer% * %the_osb% >>%LOG_OPER%\History_%year%.txt
 
pause
exit /b
 
:999
for /f "delims=" %%i in ('dir /a-d /b %Put%\%thePATH%\OUT\OSB\%the_osb%\*.???') do call :x "%Put%\%thePATH%\OUT\OSB\%the_osb%\%%i"
и в конце своего батника я редактировал текстовые файлы оператора и пользователя перекодировал кодировку
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
echo меняем кодировку у оператора
chcp 866 >nul
for /f "tokens=*" %%a in (D:\SERVER\BAT\AUTO_TECOS\LOG\History_%year%.txt) do call :convert %%a
exit /b
 
:convert
chcp 1251 >nul
echo %*>>D:\SERVER\BAT\AUTO_TECOS\LOG\History__%year%.txt
chcp 866 >nul
del D:\SERVER\BAT\AUTO_TECOS\LOG\History_%year%.txt
 
echo меняем кодировку у ящика
chcp 866 >nul
for /f "tokens=*" %%a in (E:\OTDEL\%thePATH%\LOG\History_%thePATH%_%year%.txt) do call :convert %%a
exit /b
 
:convert
chcp 1251 >nul
echo %*>>E:\OTDEL\%thePATH%\LOG\History__%thePATH%_%year%.txt
chcp 866 >nul
del E:\OTDEL\%thePATH%\LOG\History_%thePATH%_%year%.txt
ну в принципе разобрался почти со всем твоим кодом лучше конечно чем то что было у меня первый опыт перешел за 1200 строк а тут всего чуть больше 100. Остались вот эти вопросы.
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
03.11.2011, 21:13
Ну можно оставить эти функции они так же будут работать.
А можно и переделать.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
03.11.2011, 21:14  [ТС]
здесь я передавал через параметр а как сделать у тебя точно так же через call c параметром ?

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cls
 
goto start
:p
set dr=%~z1
rem pause
echo %dr%
rem pause 
if %dr% lss 10485760 move %1 c:\2\ 
rem pause
exit /b
 
:start
if not exist c:\2 md c:\2
if not exist c:\2\1 md c:\2\1
for /f "delims=" %%i in ('dir /a-d /b c:\1\*.*') do call :p "c:\1\%%i" 
 
rem pause
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
03.11.2011, 21:20
1 вариант аналогичен
Windows Batch file
1
2
3
4
5
if not exist c:\2 md c:\2
if not exist c:\2\1 md c:\2\1
for /f "delims=" %%i in ('dir /a-d /b c:\1\*.*') do (
for %%j in ("c:\1\%%i") do if %%~zj lss 10485760 move "c:\1\%%i" c:\2\
)
1
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
03.11.2011, 21:21  [ТС]
1 вариант аналогичен
Спасибо а с остальным попробую сам разобраться по результату отпишусь. Еще раз спасибо.
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
03.11.2011, 21:21
Здесь вообще то и есть call с параметром, а можно просто без call
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
03.11.2011, 22:28  [ТС]
Слушай еще столкнулся с такой проблемой на форуме писал в общей теме но ответов не нашел. Может у тебя есть идея ? Вопрос в том что пользователь положив файл в каталог отправки забудет что-то дописать начнет редактировать его, а батник не сможет сделать никаких манипуляций. пока не закроется документ. и получается зациклится. что можно придумать ?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
03.11.2011, 23:59
ну можно файл пропустить и переместить его позже.
алгоритм просто немного поменять надо.
по аналогии с кодом из Перемещение файлов с условием

Добавлено через 3 минуты
ну или если вам прям нужно этот файл то если попытка перемещения неудачно, делаете копирование, оно должно сработать.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
04.11.2011, 09:52  [ТС]
Хм... а мы можем поместить этот файл в массив ну или в какую-нибудь динамическую переменную или переменные если файлов много, и просто пропустить этот файл и продолжить работать дальше ? Что б допустим если ошибка, то записываем в переменную и в дальнейшем пропускаем этот файл.

и потом при повторном срабатывании батника уже смотрим если занят то опять в переменную если не занят то производим перемещение?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
04.11.2011, 10:24
можно но непонятно зачем его в переменную записывать все равно при следующем срабатвании все файлы перебираются или у вас какой то другой алгоритм
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
04.11.2011, 10:26  [ТС]
Ок доделаю отпишусь. Спасибо. А вообще понятие массив или неопределенное количество переменных есть в понятии BATH. Динамическое количество переменных?
0
835 / 349 / 12
Регистрация: 04.10.2009
Сообщений: 589
04.11.2011, 12:27
Пример как делать и обрабатывать массивы
все возможные варианты написания пожалуй
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
setlocal enabledelayedexpansion
::заполнение массива 1 вариант с переменной из цикла
set masslen=0
for /l %%i in (1,1,10) do (
set /a mass%%i=%%i*%%i
set masslen=%%i
)
::просмотр массива для проверки
set mass
pause
 
::заполнение массива 2 вариант с обычной переменной
set masslen=0
:m1
set /a masslen+=1
set /a mass%masslen%=%masslen%*%masslen%
if not %masslen%==10 goto m1
::просмотр массива для проверки
set mass
pause
 
::обработка массива 1 вариант с переменной из цикла
for /l %%i in (1,1,%masslen%) do (
call set x=%%mass%%i%%
echo !x!
)
pause
 
::обработка массива 2 вариант с переменной из цикла
for /l %%i in (1,1,%masslen%) do (
set x=!mass%%i!
echo !x!
)
pause
 
::обработка массива 3 вариант с обычной переменной
set num=1
:m2
call set x=%%mass%num%%%
echo %x%
set /a num+=1
if %masslen% GEQ %num% goto m2
pause
 
::обработка массива 4 вариант с обычной переменной
set num=1
:m3
set x=!mass%num%!
echo %x%
set /a num+=1
if %masslen% GEQ %num% goto m3
pause
1
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
04.11.2011, 23:45  [ТС]
Спасибо по разбираюсь.
0
35 / 27 / 0
Регистрация: 11.10.2011
Сообщений: 380
05.11.2011, 11:13  [ТС]
Вот почти дописал только все равно по оставались небольшие глюки и недочеты
Например в команде стоит move /y а все равно спрашивает если существует такой же файл ПЕРЕЗАПИСАТЬ ??????
почему то указал что длина файлов не должна превышать 8ми символов а вместо этого он работает со всеми значениями

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
@echo off
 
setlocal enabledelayedexpansion
 
:start
 
::Устанавливаем пути
::*************************************************************************************
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 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%\LOG\" md "E:\OTDEL\%thePATH%\LOG\"
rem if not exist "E:\OTDEL\%thePATH%\NOT_OUT\" md "E:\OTDEL\%thePATH%\NOT_OUT\"
rem if not exist "E:\OTDEL\%thePATH%\Arj_pack\1.Что_пакуем_ложить сюда\" md "E:\OTDEL\%thePATH%\Arj_pack\1.Что_пакуем_положить сюда\"
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
::**************************************************************************************
 
 
 
 
echo установка даты
set dd=%DATE%
set tt=%TIME%
set /a ddd=%dd:~0,2%
IF %ddd% lss 10 (
SET day=0%ddd%) else (
SET day=%ddd%)
set month=%dd:~3,2%
set year=%dd:~6,4%
set /a ttt=%tt:~0,2%
IF %ttt% LSS 10 (
 SET hour=0%ttt%) else (
 SET hour=%ttt%)
SET minute=%tt:~3,2%
SET sec=%tt:~6,2%
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
 rem echo %%a
 rem pause
 echo Установили каталог проверки ОСБ # !the_osb!
 for /f "delims=" %%c in ('dir /a-d /b "%Put%\%thePATH%\OUT\OSB\%%a\*.*" 2^>nul') do (
  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') 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\") 
     if errorlevel 1 ( move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%Put%\%thePATH%\NOT_OUT\%out_time%\%%a\") 
     if errorlevel 1 ( call :mis_1) 
     if errorlevel 0 ( if not exist "%GOOD%\OSB\%%a" md "%GOOD%\OSB\%%a")
     if errorlevel 0 ( move /y "%Put%\%thePATH%\OUT\OSB\%%a\%%c" "%GOOD%\OSB\%%a")
     if errorlevel 0 ( 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') 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') 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') 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" 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\" 
   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" 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\" 
   move /y !DOCX! %Put%\%thePATH%\NOT_OUT\%out_time%\%%a
   call :mis_5) 
 
   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)
 
 
  )
 )
 
 
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
rem echo mis_3
rem pause
 
rem :m3
rem if "%jj:~14,1%"=="" (
rem set jj=%jj%
rem goto m3
rem )
 
rem echo mis_0
rem pause
 
 
rem :m0
rem if "%massa:~12,1%"=="" (
rem set massa=%massa% 
rem goto m0
rem )
 
 
 
rem echo сейчас будет записан лог файла превышающего размер
rem pause
 
echo * %thePATH%   * %day%.%month%.%year% * %hour%.%minute%.%sec% * %cc% * Не отправлен  * Размер больше %massa% * %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% * %cc% * Не отправлен  * Внутри *.DOC        * %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% * %cc% * Не отправлен  * Внутри *.DOCX          * %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
 
 
 
 
 
: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                  
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%
cls
goto start
rem pause
rem exit /b
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.11.2011, 11:13

Даны два текстовых файла. Добавить в конец первого файла содержимое второго файла
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: ...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
сукцессия 43. Вторая научная статья за месяц- прайминг и гатгил
anaschu 25.07.2026
две стороны одной монеты
Более приземисто - Эстафету хвоста в .cdl (деревья эстафеты в сад).
Hrethgir 24.07.2026
В будущем, после написания блока инверсии обхода дерева (эстафеты хвоста), я планирую вернуться к нашему прошлому разговору о том, обладают ли знания целеполаганием. Тогда я пришел к выводу, что. . .
Вот представьте что вам дали бессмертие.
kumehtar 24.07.2026
Вот представьте что вам дали бессмертие, ничего более не меняя. Вообще ничего, только бессмертие в нынешнем виде. Рады были бы? Что бы вы тут делали всё это время? Никакой пенсии. Никакого нового. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru