|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка последовательности в файлах. |
|
CMD/BAT - [решено] Проверка последовательности в файлах.
|
Новый участник Сообщения: 46 |
Здравствуйте! Есть такая задача:
В некой папке есть файлы. Имена файлов - порядковый набор цифр. Расширение - буква и две цифры. Нужно проверить, идут ли файлы подряд или некоторых не хватает. Например: 12345001.В12 12345002.В12 12345004.В12 Не хватает 12345003.В12 Вторая беда в том, что расширения могут быть разными, соответственно номера файлов могут повторяться. Например: 12345001.В10 12345001.В12 12345002.В10 12345002.В12 12345003.В10 12345004.В10 12345004.В12 Всё ещё не хватает 12345003.В12 В принципе, можно руками вводить номер, с которого начинать проверять и расширение. Но я всё равно не знаю, как проверить, что оно идёт попорядку. Зарание благодарен за любую помощь! |
|
Отправлено: 14:55, 16-05-2013 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Спасибо всем, кто уже принял участие в этом проекте. К сожалению, всё, что мы попробовали до сих пор, "немножко не то"... Честно признаюсь, у меня не хватает мозгов, чтобы состряпать что-то путное, даже опираясь на предложенные вами коды. По-этому, я попытаюсь максимально подробно описать, что именно нужно.
1. Выбор директории. Способ не важен. Drug & Drop, предложенный Iska, это хорошо, но не критично. 2. Список расширений. В папке следует проверить, какие расширения присутствуют. Они всегда будут иметь следующий вид: H01 H02 H03 и и.д. Последний - H34, но возможен дальнейший рост, так что, если прописывать жёстско, то стоит дойти до H50. 3. Проверка файлов. Для каждого расширения следует проверить, какой номер файла является максимальным. Имя файла состоит из двух частей. XXXXXYYY.HZZ, где XXXXX - номер лицензии, YYY - номер файла, а HZZ - расширение(указывает, с какого сервера файл). Тут можно запросить ввести номер лицензии вручную. Найдя максимальный номер для первого расширения, следует проверить наличие файлов, начиная с XXXXX001 и до максимального. Затем следует перейти к следующему расширению и повторить процедуру. (Без повторного запроса номера лицензии). 4. Отображение результатов. Результаты хотелось бы в текстовой файл, в котором бы было указанно: Номер лицензии Список расширений Если порядок не нарушен - расширение, первый и последний файлы и отметка, что всё в порядке. Если порядок нарушен - расширение, первый и последний файлы и список недостающих файлов. Как-то так. Если кто-то такое напишет - будем очень благодарны! Зарание спасибо за любую помощь! |
Отправлено: 13:48, 19-05-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать subuday77, учитесь сразу излагать условия ТЗ полностью.
Цитата subuday77:
|
|
Отправлено: 14:48, 19-05-2013 | #12 |
Ветеран Сообщения: 1758
|
subuday77,
@echo off setlocal set /p dir="Choose Folder: " pushd "%dir%" || echo Wrong Path && goto:eof for /f "tokens=*" %%i in ('dir /b') do call:set "%%i" for /f "tokens=2-4 delims=_=" %%i in ('set set_') do ( 1>>"%~dp0report.txt" ( echo. echo License: %%j echo -------------- echo Extension: %%i:, Last number %%k echo. ) for /l %%l in (1001,1,1%%k) do call:check %%j %%l %%i ) popd goto:eof :set set "file=%~1" set "set_%~x1_%file:~0,5%=%file:~5,3%" goto:eof :check set "num=%2" if not exist %1%num:~-3%%3 1>>"%~dp0report.txt" (echo missing file: %1%num:~-3%%3) |
Последний раз редактировалось Foreigner, 19-05-2013 в 18:12. Отправлено: 17:21, 19-05-2013 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 18:42, 19-05-2013 | #14 |
Ветеран Сообщения: 1758
|
|
Отправлено: 19:04, 19-05-2013 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 20:20, 19-05-2013 | #16 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska,
Цитата Iska:
12345001.Н10 12345001.Н12 12345002.Н10 12345002.Н12 12345003.Н10 12345004.Н10 12345004.Н12 Не хватает 12345003.В12 Соответственно, результат дожен быть примерно такой: Н10 12345001-12345004 No missing files H12 12345001-12345004 12345003 is missing |
|
Отправлено: 22:11, 19-05-2013 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:47, 20-05-2013 | #18 |
Новый участник Сообщения: 46
|
Профиль | Отправить PM | Цитировать Iska, опечатка! Простите.
Foreigner, похоже, работает! Спасибо огромное! Переходим к полевым испытаниям. |
Отправлено: 14:37, 20-05-2013 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Esc-последовательности в BAT-файлах (ansi.sys) | AndreyY89 | Microsoft Windows 2000/XP | 8 | 16-03-2012 07:05 | |
Выполнение последовательности действий нажатий кнопок мышки | DREDivan | AutoIt | 3 | 05-09-2010 19:25 | |
ASCII-последовательности | lunas | Программирование и базы данных | 2 | 09-02-2003 23:54 | |
ASCII-последовательности | lunas | Хочу все знать | 6 | 05-02-2003 14:24 |
|