Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 27.11.2017
Сообщений: 7

Вывести строки с последней датой

04.04.2020, 02:18. Показов 1526. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день
Нужна помощь
Есть задание: В файле query3 определить товар/товары, который появился в продаже последним.

Я определил последнюю дату, в каждой переменной отдельно хранится день,месяц и год. Но не могу понять, как мне теперь вывести строки с этой датой,поскольку получается выводить также ненужные строки с промежуточными "последними" датами. Подскажите пожалуйста, как можно сделать. Прикладываю свой код и содержимое файла query3.

Мой код:
Bash
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
BEGIN {
FS="!"
ss=0
mass["JAN"]=1
mass["FEB"]=2
mass["MAR"]=3
mass["APR"]=4
mass["MAY"]=5
mass["JUN"]=6
mass["JUL"]=7
mass["AUG"]=8
mass["SEP"]=9
mass["OCT"]=10
mass["NOV"]=11
mass["DEC"]=12
}
{
y=substr($5,8,2);\
x=substr($5,4,3);\
z=substr($5,1,2);\
if (yy<=y) {yy=y;
for (key in mass){
if (key==x) {kk=mass[key];keyzap=key}
if (mm<=kk) {mm=kk;
if (dd<=z) {dd=z;}}}
stroka[ss]=$0;ss++}
}
END {
for (i=0; i<ss; i++) {
print stroka[i]
}
print yy
print keyzap
print dd
}
Содержимое файла query3 :
100890!ACE TENNIS NET !58 !46.4 !01-JAN-89
100860!ACE TENNIS RACKET I !35 !28 !01-JUN-90
100861!ACE TENNIS RACKET II !45 !36 !01-JUN-90
100870!ACE TENNIS BALLS-3 PACK !2.8 !2.4 !01-JAN-90
100871!ACE TENNIS BALLS-6 PACK !5.6 !4.8 !01-JAN-90
101860!SP TENNIS RACKET !24 !18 !15-FEB-89
101863!SP JUNIOR RACKET !12.5 !9.4 !15-FEB-89
102130!RH: "GUIDE TO TENNIS" !3.4 !2.8 !18-AUG-89
200376!SB ENERGY BAR-6 PACK !2.4 !1.75 !15-NOV-90
200380!SB VITA SNACK-6 PACK !4 !3.2 !15-NOV-90
103120!WIFF SOFTBALL BAT I !25 !20 !01-JUN-90
103121!WIFF SOFTBALL BAT II !30 !24 !01-JUN-90
103130!WIFF SOFTBALL, SMALL !4.2 !3.6 !01-JAN-90
103131!WIFF SOFTBALL, LARGE !4.5 !3.9 !01-JAN-90
103140!WIFF SOFTBALL MITT (LH) !20 !15 !15-FEB-89
103141!WIFF SOFTBALL MITT (RH) !20 !15 !15-FEB-89
102132!RH: "GUIDE TO SOFTBALL" !3.4 !2.8 !18-AUG-89
104350!DUNK BASKETBALL INDOOR !44 !35.3 !01-JUN-90
104351!DUNK BASKETBALL OUTDOOR !26 !20.8 !01-JUN-90
104352!DUNK BASKETBALL PROFESSIONAL!58.3 !40.8 !01-JUN-90
104360!DUNK HOOP !39 !32 !01-JAN-90
104361!DUNK HOOP W/FIBERGLASS BOARD!50 !35 !01-JAN-90
104362!DUNK NETS - RAINBOW !5 !4 !15-FEB-89
102134!RH: "GUIDE TO BASKETBALL" !3.4 !2.8 !18-AUG-89
105123!YELLOW JERSEY BICYCLE HELMET!40 !34 !01-JUN-90
105124!YELLOW JERSEY BICYCLE GLOVES!15 !10 !01-JUN-90
105125!YELLOW JERSEY WATER BOTTLE !3 !2.6 !01-JAN-90
105126!YELLOW JERSEY BOTTLE CAGE !6 !5 !01-JAN-90
105127!YELLOW JERSEY FRAME PUMP !6 !5 !15-NOV-90
105128!YELLOW JERSEY SADDLE PACK !10 !8 !15-NOV-90
102136!RH: "GUIDE TO CYCLING" !3.4 !2.8 !18-AUG-89
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.04.2020, 02:18
Ответы с готовыми решениями:

Вывести имя файла с самой последней или самой ранней датой последнего использования
Здравствуйте. Помогите с написанием bat файла. Разработать командный файл, который бы выводил в зависимости от ключа на экран имя файла...

Вывести имя файла с самой последней или с самой ранней датой последнего использования в текущем каталоге
Всем привет! Помогите, пжл., с написанием bat файла. Нужно: разработать командный файл, который бы выводил в зависимости от ключа на...

Разность между текущей датой и датой последней покупки
Помогите пожалуйста. Как можно посчитать давность покупки?как это запросом написать? (это вообще разность между текущей датой и датой...

8
 Аватар для volodin661
6791 / 2288 / 348
Регистрация: 10.12.2013
Сообщений: 7,897
04.04.2020, 03:30
PowerShell
1
2
3
Import-Csv -Path query3  -Delimiter !  -Header Id, Name, A, B, Date |
   Where  { [DateTime]::TryParse($_.Date, [ref]$dt); $_.Date = $dt }  |
       Sort-Object Date, Id
Output:

Code
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
Id   : 100890
Name : ACE TENNIS NET 
A    : 58 
B    : 46.4 
Date : 01/01/1989 00:00:00
 
Id   : 101860
Name : SP TENNIS RACKET 
A    : 24 
B    : 18 
Date : 02/15/1989 00:00:00
 
Id   : 101863
Name : SP JUNIOR RACKET 
A    : 12.5 
B    : 9.4 
Date : 02/15/1989 00:00:00
 
Id   : 103140
Name : WIFF SOFTBALL MITT (LH) 
A    : 20 
B    : 15 
Date : 02/15/1989 00:00:00
 
Id   : 103141
Name : WIFF SOFTBALL MITT (RH) 
A    : 20 
B    : 15 
Date : 02/15/1989 00:00:00
 
Id   : 104362
Name : DUNK NETS - RAINBOW 
A    : 5 
B    : 4 
Date : 02/15/1989 00:00:00
 
Id   : 102130
Name : RH: "GUIDE TO TENNIS" 
A    : 3.4 
B    : 2.8 
Date : 08/18/1989 00:00:00
 
Id   : 102132
Name : RH: "GUIDE TO SOFTBALL" 
A    : 3.4 
B    : 2.8 
Date : 08/18/1989 00:00:00
 
Id   : 102134
Name : RH: "GUIDE TO BASKETBALL" 
A    : 3.4 
B    : 2.8 
Date : 08/18/1989 00:00:00
 
Id   : 102136
Name : RH: "GUIDE TO CYCLING" 
A    : 3.4 
B    : 2.8 
Date : 08/18/1989 00:00:00
 
Id   : 100870
Name : ACE TENNIS BALLS-3 PACK 
A    : 2.8 
B    : 2.4 
Date : 01/01/1990 00:00:00
 
Id   : 100871
Name : ACE TENNIS BALLS-6 PACK 
A    : 5.6 
B    : 4.8 
Date : 01/01/1990 00:00:00
 
Id   : 103130
Name : WIFF SOFTBALL, SMALL 
A    : 4.2 
B    : 3.6 
Date : 01/01/1990 00:00:00
 
Id   : 103131
Name : WIFF SOFTBALL, LARGE 
A    : 4.5 
B    : 3.9 
Date : 01/01/1990 00:00:00
 
Id   : 104360
Name : DUNK HOOP 
A    : 39 
B    : 32 
Date : 01/01/1990 00:00:00
 
Id   : 104361
Name : DUNK HOOP W/FIBERGLASS BOARD
A    : 50 
B    : 35 
Date : 01/01/1990 00:00:00
 
Id   : 105125
Name : YELLOW JERSEY WATER BOTTLE 
A    : 3 
B    : 2.6 
Date : 01/01/1990 00:00:00
 
Id   : 105126
Name : YELLOW JERSEY BOTTLE CAGE 
A    : 6 
B    : 5 
Date : 01/01/1990 00:00:00
 
Id   : 100860
Name : ACE TENNIS RACKET I 
A    : 35 
B    : 28 
Date : 06/01/1990 00:00:00
 
Id   : 100861
Name : ACE TENNIS RACKET II 
A    : 45 
B    : 36 
Date : 06/01/1990 00:00:00
 
Id   : 103120
Name : WIFF SOFTBALL BAT I 
A    : 25 
B    : 20 
Date : 06/01/1990 00:00:00
 
Id   : 103121
Name : WIFF SOFTBALL BAT II 
A    : 30 
B    : 24 
Date : 06/01/1990 00:00:00
 
Id   : 104350
Name : DUNK BASKETBALL INDOOR 
A    : 44 
B    : 35.3 
Date : 06/01/1990 00:00:00
 
Id   : 104351
Name : DUNK BASKETBALL OUTDOOR 
A    : 26 
B    : 20.8 
Date : 06/01/1990 00:00:00
 
Id   : 104352
Name : DUNK BASKETBALL PROFESSIONAL
A    : 58.3 
B    : 40.8 
Date : 06/01/1990 00:00:00
 
Id   : 105123
Name : YELLOW JERSEY BICYCLE HELMET
A    : 40 
B    : 34 
Date : 06/01/1990 00:00:00
 
Id   : 105124
Name : YELLOW JERSEY BICYCLE GLOVES
A    : 15 
B    : 10 
Date : 06/01/1990 00:00:00
 
Id   : 105127
Name : YELLOW JERSEY FRAME PUMP 
A    : 6 
B    : 5 
Date : 11/15/1990 00:00:00
 
Id   : 105128
Name : YELLOW JERSEY SADDLE PACK 
A    : 10 
B    : 8 
Date : 11/15/1990 00:00:00
 
Id   : 200376
Name : SB ENERGY BAR-6 PACK 
A    : 2.4 
B    : 1.75 
Date : 11/15/1990 00:00:00
 
Id   : 200380
Name : SB VITA SNACK-6 PACK 
A    : 4 
B    : 3.2 
Date : 11/15/1990 00:00:00
Добавлено через 3 минуты
Собственно, по результату экранного вывода видно, что товар с наибольшим Id имеет самую позднюю дату.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
05.04.2020, 22:57
Задача конечно не для bat, но решил заморочиться и вроде бы получилось:
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
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in (query3.txt) do (
    set string=%%a
    set date=!string:~-9!
    set year=!date:~-2!
    set date=!date:~,7!
    set date=!date:JAN=1!
    set date=!date:FEB=2!
    set date=!date:MAR=3!
    set date=!date:APR=4!
    set date=!date:MAY=5!
    set date=!date:JUN=6!
    set date=!date:JUL=7!
    set date=!date:AUG=8!
    set date=!date:SEN=9!
    set date=!date:OKT=10!
    set date=!date:NOV=11!
    set date=!date:DEC=12!
    set date=!date:01=1!
    set date=!date:02=2!
    set date=!date:03=3!
    set date=!date:04=4!
    set date=!date:05=5!
    set date=!date:06=6!
    set date=!date:07=7!
    set date=!date:08=8!
    set date=!date:09=9!
    if not !year! equ 00 (
        if not !year! equ 01 (
            if not !year! equ 02 (
                if not !year! equ 03 (
                    if not !year! equ 04 (
                        if not !year! equ 05 (
                            if not !year! equ 06 (
                                if not !year! equ 07 (
                                    if not !year! equ 08 (
                                        if not !year! equ 09 (
                                            if not !year! equ 10 (
                                                if not !year! equ 11 (
                                                    if not !year! equ 12 (
                                                        if not !year! equ 13 (
                                                            if not !year! equ 14 (
                                                                if not !year! equ 15 (
                                                                    if not !year! equ 16 (
                                                                        if not !year! equ 17 (
                                                                            if not !year! equ 18 (
                                                                                if not !year! equ 19 (
                                                                                    if not !year! equ 20 (
                                                                                        if not !year! equ 21 (
                                                                                            if not !year! equ 22 (
                                                                                                if not !year! equ 23 (
                                                                                                    if not !year! equ 24 (
                                                                                                        if not !year! equ 25 (
                                                                                                            set new_format_year=19!year!
                                                                                                        ) else (
                                                                                                            set new_format_year=20!year!
                                                                                                        )
                                                                                                    )
                                                                                                )
                                                                                            )
                                                                                        )
                                                                                    )
                                                                                )
                                                                            )
                                                                        )
                                                                    )
                                                                )
                                                            )
                                                        )
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )
    set new_format_date=!date!!new_format_year!
    echo !new_format_date!>>5.txt
)
for /f "tokens=3 delims=-" %%a in (5.txt) do (
    echo %%a>>log.txt
)
sort log.txt>log2.txt
move log2.txt log.txt>nul
for /f %%a in (log.txt) do (
    set year=%%a
    call :step_1
)
mkdir month
for /f %%a in (log.txt) do (
    set month=%%a
    echo !month!>>C:\zadachka32\month\month_%%a.txt
)
del log.txt
call :step_3
rmdir /s /q month
for /f "tokens=1-3 delims=-" %%a in (full_date.txt) do (
    echo %%b-%%c>>5.txt
)
for /f %%a in (log_date.txt) do (
    set obrazec=%%a
    call :step_6
)
del 5.txt
del log_date.txt
mkdir month_year
for /f %%a in (month_year_sort.txt) do (
    if defined month_year (
        if %%a==!month_year! (
            echo !month_year!>>month_year\!schetchik2!.txt
        ) else (
            set month_year=%%a
            set /A schetchik2+=1
            echo !month_year!>>month_year\!schetchik2!.txt
        )
    ) else (
        set month_year=%%a
        set /A schetchik2+=1
        echo !month_year!>>month_year\!schetchik2!.txt
    )
)
call :step_7
rmdir /s /q month_year
for /f %%a in (final.txt) do (
    set obrazec=%%a
    call :step_10
)
del final.txt
del full_date.txt
del month_year_sort.txt
for /f %%a in (full_date_sort.txt) do (
    set last_date=%%a
)
for /f "tokens=1-3 delims=-" %%a in ("!last_date!") do (
    if %%a==1 (
        if %%a==2 (
            if %%a==3 (
                if %%a==4 (
                    if %%a==5 (
                        if %%a==6 (
                            if %%a==7 (
                                if %%a==8 (
                                    if %%a==9 (
                                        set day=0%%a
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )
    set day=%%a
    if %%b==1 set month=JAN
    if %%b==2 set month=FEB
    if %%b==3 set month=MAR
    if %%b==4 set month=APR
    if %%b==5 set month=MAY
    if %%b==6 set month=JUN
    if %%b==7 set month=JUL
    if %%b==8 set month=AUG
    if %%b==9 set month=SEN
    if %%b==10 set month=OKT
    if %%b==11 set month=NOV
    if %%b==12 set month=DEC
    set year=%%c
    set year=!year:~-2!
    set new_last_date=!day!-!month!-!year!
)
del full_date_sort.txt
echo Позиции с самой поздней датой
echo.
type query3.txt | findstr /e "!new_last_date!"
pause>nul
exit
:step_1
for /f "tokens=1-3 delims=-" %%a in (5.txt) do (
    if %%c==!year! (
        set need_del_string=%%a-%%b-%%c
        set /A schetchik+=1
        if !schetchik!==1 (
            echo %%a-%%b-%%c>>full_date.txt
            goto step_2
        )
    )
)
:step_2
set podschet=
for /f "tokens=*" %%a in (5.txt) do (
    set /A podschet+=1
)
if !podschet!==1 (
    del 5.txt
    exit /b
)
for /f "tokens=*" %%a in (5.txt) do (
    if not %%a==!need_del_string! (
        echo %%a>>5_1.txt
    )
    if %%a==!need_del_string! (
        set /A schetchik2+=1
        if !schetchik2!==1 (
            echo.
        )
        if !schetchik2! gtr 1 (
            echo %%a>>5_1.txt
        )
    )
)
move 5_1.txt 5.txt>nul
set /A schetchik2=0
set /A schetchik=0
set /A podschet=0
exit /b
:step_3
for %%a in (C:\zadachka32\month\*.txt) do (
    set file_date=%%a
    call :step_4
)
exit /b
:step_4
for /f %%a in (!file_date!) do (
    set /A schet+=1
    if !schet!==1 (
        set test=%%a
        call :step_5
        set schet=
        exit /b
    )
)
:step_5
for /l %%a in (1 1 12) do (
    echo %%a-!test!>>log_date.txt
)
exit /b
:step_6
for /f %%a in (5.txt) do (
    if %%a==!obrazec! (
        echo %%a>>month_year_sort.txt
    )
)
exit /b
:step_7
for %%a in (C:\zadachka32\month_year\*.txt) do (
    set file_month_year=%%a
    call :step_8
)
exit /b
:step_8
for /f %%a in (!file_month_year!) do (
    set /A schet1+=1
    if !schet1!==1 (
        set month_year1=%%a
        call :step_9
        set schet1=
        exit /b     
    )
)
:step_9
for /l %%a in (1 1 31) do (
    echo %%a-!month_year1!>>final.txt
)
exit /b
:step_10
for /f %%a in (full_date.txt) do (
    if %%a==!obrazec! (
        echo %%a>>full_date_sort.txt
    )
)
exit /b
P.S. Запускать в кодировке OEM 866 рядом c query3.txt

Добавлено через 10 минут
Исправленное упущение:
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
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in (query3.txt) do (
    set string=%%a
    set date=!string:~-9!
    set year=!date:~-2!
    set date=!date:~,7!
    set date=!date:JAN=1!
    set date=!date:FEB=2!
    set date=!date:MAR=3!
    set date=!date:APR=4!
    set date=!date:MAY=5!
    set date=!date:JUN=6!
    set date=!date:JUL=7!
    set date=!date:AUG=8!
    set date=!date:SEN=9!
    set date=!date:OKT=10!
    set date=!date:NOV=11!
    set date=!date:DEC=12!
    set date=!date:01=1!
    set date=!date:02=2!
    set date=!date:03=3!
    set date=!date:04=4!
    set date=!date:05=5!
    set date=!date:06=6!
    set date=!date:07=7!
    set date=!date:08=8!
    set date=!date:09=9!
    if not !year! equ 00 (
        if not !year! equ 01 (
            if not !year! equ 02 (
                if not !year! equ 03 (
                    if not !year! equ 04 (
                        if not !year! equ 05 (
                            if not !year! equ 06 (
                                if not !year! equ 07 (
                                    if not !year! equ 08 (
                                        if not !year! equ 09 (
                                            if not !year! equ 10 (
                                                if not !year! equ 11 (
                                                    if not !year! equ 12 (
                                                        if not !year! equ 13 (
                                                            if not !year! equ 14 (
                                                                if not !year! equ 15 (
                                                                    if not !year! equ 16 (
                                                                        if not !year! equ 17 (
                                                                            if not !year! equ 18 (
                                                                                if not !year! equ 19 (
                                                                                    if not !year! equ 20 (
                                                                                        if not !year! equ 21 (
                                                                                            if not !year! equ 22 (
                                                                                                if not !year! equ 23 (
                                                                                                    if not !year! equ 24 (
                                                                                                        if not !year! equ 25 (
                                                                                                            set new_format_year=19!year!
                                                                                                        )
                                                                                                    )
                                                                                                )
                                                                                            )
                                                                                        )
                                                                                    )
                                                                                )
                                                                            )
                                                                        )
                                                                    )
                                                                )
                                                            )
                                                        )
                                                    )
                                                )
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    ) else (
        set new_format_year=20!year!
    )
    set new_format_date=!date!!new_format_year!
    echo !new_format_date!>>5.txt
)
for /f "tokens=3 delims=-" %%a in (5.txt) do (
    echo %%a>>log.txt
)
sort log.txt>log2.txt
move log2.txt log.txt>nul
for /f %%a in (log.txt) do (
    set year=%%a
    call :step_1
)
mkdir month
for /f %%a in (log.txt) do (
    set month=%%a
    echo !month!>>C:\zadachka32\month\month_%%a.txt
)
del log.txt
call :step_3
rmdir /s /q month
for /f "tokens=1-3 delims=-" %%a in (full_date.txt) do (
    echo %%b-%%c>>5.txt
)
for /f %%a in (log_date.txt) do (
    set obrazec=%%a
    call :step_6
)
del 5.txt
del log_date.txt
mkdir month_year
for /f %%a in (month_year_sort.txt) do (
    if defined month_year (
        if %%a==!month_year! (
            echo !month_year!>>month_year\!schetchik2!.txt
        ) else (
            set month_year=%%a
            set /A schetchik2+=1
            echo !month_year!>>month_year\!schetchik2!.txt
        )
    ) else (
        set month_year=%%a
        set /A schetchik2+=1
        echo !month_year!>>month_year\!schetchik2!.txt
    )
)
call :step_7
rmdir /s /q month_year
for /f %%a in (final.txt) do (
    set obrazec=%%a
    call :step_10
)
del final.txt
del full_date.txt
del month_year_sort.txt
for /f %%a in (full_date_sort.txt) do (
    set last_date=%%a
)
for /f "tokens=1-3 delims=-" %%a in ("!last_date!") do (
    if %%a==1 (
        if %%a==2 (
            if %%a==3 (
                if %%a==4 (
                    if %%a==5 (
                        if %%a==6 (
                            if %%a==7 (
                                if %%a==8 (
                                    if %%a==9 (
                                        set day=0%%a
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )
    set day=%%a
    if %%b==1 set month=JAN
    if %%b==2 set month=FEB
    if %%b==3 set month=MAR
    if %%b==4 set month=APR
    if %%b==5 set month=MAY
    if %%b==6 set month=JUN
    if %%b==7 set month=JUL
    if %%b==8 set month=AUG
    if %%b==9 set month=SEN
    if %%b==10 set month=OKT
    if %%b==11 set month=NOV
    if %%b==12 set month=DEC
    set year=%%c
    set year=!year:~-2!
    set new_last_date=!day!-!month!-!year!
)
del full_date_sort.txt
echo Позиции с самой поздней датой
echo.
type query3.txt | findstr /e "!new_last_date!"
pause>nul
exit
:step_1
for /f "tokens=1-3 delims=-" %%a in (5.txt) do (
    if %%c==!year! (
        set need_del_string=%%a-%%b-%%c
        set /A schetchik+=1
        if !schetchik!==1 (
            echo %%a-%%b-%%c>>full_date.txt
            goto step_2
        )
    )
)
:step_2
set podschet=
for /f "tokens=*" %%a in (5.txt) do (
    set /A podschet+=1
)
if !podschet!==1 (
    del 5.txt
    exit /b
)
for /f "tokens=*" %%a in (5.txt) do (
    if not %%a==!need_del_string! (
        echo %%a>>5_1.txt
    )
    if %%a==!need_del_string! (
        set /A schetchik2+=1
        if !schetchik2!==1 (
            echo.
        )
        if !schetchik2! gtr 1 (
            echo %%a>>5_1.txt
        )
    )
)
move 5_1.txt 5.txt>nul
set /A schetchik2=0
set /A schetchik=0
set /A podschet=0
exit /b
:step_3
for %%a in (C:\zadachka32\month\*.txt) do (
    set file_date=%%a
    call :step_4
)
exit /b
:step_4
for /f %%a in (!file_date!) do (
    set /A schet+=1
    if !schet!==1 (
        set test=%%a
        call :step_5
        set schet=
        exit /b
    )
)
:step_5
for /l %%a in (1 1 12) do (
    echo %%a-!test!>>log_date.txt
)
exit /b
:step_6
for /f %%a in (5.txt) do (
    if %%a==!obrazec! (
        echo %%a>>month_year_sort.txt
    )
)
exit /b
:step_7
for %%a in (C:\zadachka32\month_year\*.txt) do (
    set file_month_year=%%a
    call :step_8
)
exit /b
:step_8
for /f %%a in (!file_month_year!) do (
    set /A schet1+=1
    if !schet1!==1 (
        set month_year1=%%a
        call :step_9
        set schet1=
        exit /b     
    )
)
:step_9
for /l %%a in (1 1 31) do (
    echo %%a-!month_year1!>>final.txt
)
exit /b
:step_10
for /f %%a in (full_date.txt) do (
    if %%a==!obrazec! (
        echo %%a>>full_date_sort.txt
    )
)
exit /b
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
06.04.2020, 10:34
Исправлены серьезные ошибки в работе скрипта:
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
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=*" %%a in (query3.txt) do (
    set string=%%a
    set date=!string:~-9!
    set year=!date:~-2!
    set date=!date:~,7!
    set date=!date:JAN=1!
    set date=!date:FEB=2!
    set date=!date:MAR=3!
    set date=!date:APR=4!
    set date=!date:MAY=5!
    set date=!date:JUN=6!
    set date=!date:JUL=7!
    set date=!date:AUG=8!
    set date=!date:SEN=9!
    set date=!date:OKT=10!
    set date=!date:NOV=11!
    set date=!date:DEC=12!
    set date=!date:01=1!
    set date=!date:02=2!
    set date=!date:03=3!
    set date=!date:04=4!
    set date=!date:05=5!
    set date=!date:06=6!
    set date=!date:07=7!
    set date=!date:08=8!
    set date=!date:09=9!
    if !year!==00 (
        set new_format_year=20!year!
    )
    if !year!==01 (
        set new_format_year=20!year!
    )
    if !year!==02 (
        set new_format_year=20!year!
    )
    if !year!==03 (
        set new_format_year=20!year!
    )
    if !year!==04 (
        set new_format_year=20!year!
    )
    if !year!==05 (
        set new_format_year=20!year!
    )
    if !year!==06 (
        set new_format_year=20!year!
    )
    if !year!==07 (
        set new_format_year=20!year!
    )
    if !year!==08 (
        set new_format_year=20!year!
    )
    if !year!==09 (
        set new_format_year=20!year!
    )
    if !year!==10 (
        set new_format_year=20!year!
    )
    if !year!==11 (
        set new_format_year=20!year!
    )
    if !year!==12 (
        set new_format_year=20!year!
    )
    if !year!==13 (
        set new_format_year=20!year!
    )
    if !year!==14 (
        set new_format_year=20!year!
    )
    if !year!==15 (
        set new_format_year=20!year!
    )
    if !year!==16 (
        set new_format_year=20!year!
    )
    if !year!==17 (
        set new_format_year=20!year!
    )
    if !year!==18 (
        set new_format_year=20!year!
    )
    if !year!==19 (
        set new_format_year=20!year!
    )
    if !year!==20 (
        set new_format_year=20!year!
    )
    if !year!==21 (
        set new_format_year=20!year!
    )
    if !year!==22 (
        set new_format_year=20!year!
    )
    if !year!==23 (
        set new_format_year=20!year!
    )
    if !year!==24 (
        set new_format_year=20!year!
    )
    if !year!==25 (
        set new_format_year=20!year!
    )
    if not defined new_format_year (
        set new_format_year=19!year!
    )
    set new_format_date=!date!!new_format_year!
    set new_format_year=
    echo !new_format_date!>>5.txt
)
copy 5.txt list_date.txt>nul
for /f "tokens=3 delims=-" %%a in (5.txt) do (
    echo %%a>>log.txt
)
sort log.txt>log2.txt
move log2.txt log.txt>nul
for /f %%a in (log.txt) do (
    set year=%%a
    call :step_1
)
mkdir month
for /f %%a in (log.txt) do (
    set month=%%a
    echo !month!>>C:\zadachka32\month\month_%%a.txt
)
del log.txt
call :step_3
rmdir /s /q month
for /f "tokens=1-3 delims=-" %%a in (full_date.txt) do (
    echo %%b-%%c>>5.txt
)
for /f %%a in (log_date.txt) do (
    set obrazec=%%a
    call :step_6
)
del 5.txt
del log_date.txt
del full_date.txt
for /f %%a in (month_year_sort.txt) do (
    if not defined perem (
        set perem=%%a
        call :step_7
    ) else (
        if not %%a==!perem! (
            set perem=%%a
            call :step_7
        ) else (
            echo %%a>nul
        )
    )
)
for /f %%a in (full_date.txt) do (
    set perem1=%%a
    call :step_8
)
del month_year_sort.txt
del list_date.txt
del full_date.txt
for /f %%a in (full_date_sort.txt) do (
    set last_date=%%a
)
for /f "tokens=1-3 delims=-" %%a in ("!last_date!") do (
    if %%a==1 set day=0%%a
    if %%a==2 set day=0%%a
    if %%a==3 set day=0%%a
    if %%a==4 set day=0%%a
    if %%a==5 set day=0%%a
    if %%a==6 set day=0%%a
    if %%a==7 set day=0%%a
    if %%a==8 set day=0%%a
    if %%a==9 set day=0%%a
    if not defined day (
        set day=%%a
    )
    if %%b==1 set month=JAN
    if %%b==2 set month=FEB
    if %%b==3 set month=MAR
    if %%b==4 set month=APR
    if %%b==5 set month=MAY
    if %%b==6 set month=JUN
    if %%b==7 set month=JUL
    if %%b==8 set month=AUG
    if %%b==9 set month=SEN
    if %%b==10 set month=OKT
    if %%b==11 set month=NOV
    if %%b==12 set month=DEC
    set year=%%c
    set year=!year:~-2!
    set new_last_date=!day!-!month!-!year!
    set day=
)
del full_date_sort.txt
echo Позиции с самой поздней датой
echo.
type query3.txt | findstr /e /l "!new_last_date!"
pause>nul
exit
:step_1
for /f "tokens=1-3 delims=-" %%a in (5.txt) do (
    if %%c==!year! (
        set need_del_string=%%a-%%b-%%c
        set /A schetchik+=1
        if !schetchik!==1 (
            echo %%a-%%b-%%c>>full_date.txt
            goto step_2
        )
    )
)
:step_2
set podschet=
for /f "tokens=*" %%a in (5.txt) do (
    set /A podschet+=1
)
if !podschet!==1 (
    del 5.txt
    exit /b
)
for /f "tokens=*" %%a in (5.txt) do (
    if not %%a==!need_del_string! (
        echo %%a>>5_1.txt
    )
    if %%a==!need_del_string! (
        set /A schetchik2+=1
        if !schetchik2!==1 (
            echo.
        )
        if !schetchik2! gtr 1 (
            echo %%a>>5_1.txt
        )
    )
)
move 5_1.txt 5.txt>nul
set /A schetchik2=0
set /A schetchik=0
set /A podschet=0
exit /b
:step_3
for %%a in (C:\zadachka32\month\*.txt) do (
    set file_date=%%a
    call :step_4
)
exit /b
:step_4
for /f %%a in (!file_date!) do (
    set /A schet+=1
    if !schet!==1 (
        set test=%%a
        call :step_5
        set schet=
        exit /b
    )
)
:step_5
for /l %%a in (1 1 12) do (
    echo %%a-!test!>>log_date.txt
)
exit /b
:step_6
for /f %%a in (5.txt) do (
    if %%a==!obrazec! (
        echo %%a>>month_year_sort.txt
    )
)
exit /b
:step_7
for /l %%a in (1 1 31) do (
        echo %%a-!perem!>>full_date.txt
    )
)
exit /b
:step_8
for /f %%a in (list_date.txt) do (
    if %%a==!perem1! (
        echo %%a>>full_date_sort.txt
    )
)
exit /b
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
06.04.2020, 15:30
Karen87, если хотите на cmd делать вот кусок кода который поможет убрать строк 50 из вашего кода
Windows Batch file
1
2
3
4
5
6
7
8
@echo off
for %%a in (JAN FEB MAR APR MAY JUN JUL AUG SEN OKT NOV DEC) do set /a "n+=1"& call set "%%a=0%%n%%"
for /f "usebackq tokens=1-4* delims=!" %%a in ("query3.txt") do call :# "%%e" "%%a!%%b!%%c!%%d"
pause& exit
 
:#
    for /f "tokens=1-3 delims=-" %%a in ("%~1") do call echo %%a.%%%%b:~-2%%.%%c
exit /b
1
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
06.04.2020, 16:02
alpap, Спасибо, вот только нули в дате и месяце, если они меньше 10 лишние, но это я думаю поправимо
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
06.04.2020, 20:52
Цитата Сообщение от Karen87 Посмотреть сообщение
месяце
уберите 0 в конце 2-й строки и уберите ":~-2" из "%%%%b:~-2%%" в 7-й
1
 Аватар для volodin661
6791 / 2288 / 348
Регистрация: 10.12.2013
Сообщений: 7,897
07.04.2020, 17:30
План должен быть такой.
Если кто-то пользуется инструментальными средствами, которые вы не понимаете,
просто пристрелите его. Это проще, чем учить что-то новое и очень скоро в мире
останутся только кодировщики интерпретатора cmd, которые тратят 300 строк на задачу в одну строку.
0
3449 / 1110 / 494
Регистрация: 29.05.2016
Сообщений: 4,566
07.04.2020, 17:36
Цитата Сообщение от volodin661 Посмотреть сообщение
План должен быть такой.
Если кто-то пользуется инструментальными средствами, которые вы не понимаете,
просто пристрелите его. Это проще, чем учить что-то новое и очень скоро в мире
останутся только кодировщики интерпретатора cmd, которые тратят 300 строк на задачу в одну строку.
А ещё кроме твоих философских рассуждений неплохо бы было в теме об "автомобиле" писать именно о нём, а не о его производных
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.04.2020, 17:36
Помогаю со студенческими работами здесь

Выбрать ID с последней датой
Добрый день! Прошу помочь составить запрос на sql Есть 2 таблицы comments и abonents. comments содержит комментарий к ID и дату...

GROUP BY с последней датой
Есть табличка: http://red-squadron.ru/index.php?ind=stats Всё её содержимое хранится в одной таблице БД, в таком виде: ...

Дана матрицы размером 5х10. Вывести номер ее последней строки содержащей только положительные элементы. Если таких строк нет, то вывести 0.
Дана матрицы размером 5х10. Вывести номер ее последней строки содержащей только положительные элементы. Если таких строк нет, то вывести 0.

Запрос на выборку с последней датой
Есть таблица, предположим, код товара, ЛВ, адрес сбора, дата. Нужно отбросить все старые даты, оставив только последнюю (т.е. когда были...

Вывести элементы последней строки матрицы.
Здравствуйте. Помогите, пожалуйста. Дана матрица MxN. Вывести элементы последней строки матрицы.


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru