Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка последовательности в файлах.

Ответить
Настройки темы
CMD/BAT - [решено] Проверка последовательности в файлах.

Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте! Есть такая задача:
В некой папке есть файлы. Имена файлов - порядковый набор цифр. Расширение - буква и две цифры. Нужно проверить, идут ли файлы подряд или некоторых не хватает. Например:

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
Благодарности: 2

Профиль | Отправить 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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


subuday77, учитесь сразу излагать условия ТЗ полностью.

Цитата subuday77:
Они всегда будут иметь следующий вид: H01 H02 H03 и и.д. »
Пропуски в расширениях могут быть — «H01», «H02» и сразу, например, «H04» или «H25»?

Отправлено: 14:48, 19-05-2013 | #12


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Код: Выделить весь код
pushd "%dir%" || echo Wrong Path && goto:eof
»
Один «&»?!

Отправлено: 18:42, 19-05-2013 | #14


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Цитата:
Один «&»?!
Тогда сразу закончит работу & -- выполняется независимо от errorlevel. Попробуй в консоли:
Код: Выделить весь код
pushd C:\Windows || echo bad & exit

Отправлено: 19:04, 19-05-2013 | #15


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Тогда так:
Код: Выделить весь код
pushd "%dir%" || (echo Wrong Path & goto:eof)
Я последнее время совсем пространство не экономлю, пишу так:
Код: Выделить весь код
pushd "%dir%" || (
    echo Wrong Path
    goto:eof
)
Жаль, не всегда внутри цикла интерпретатор команд разбирает такой афронт.

Отправлено: 20:20, 19-05-2013 | #16


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska,
Цитата Iska:
Пропуски в расширениях могут быть — «H01», «H02» и сразу, например, «H04» или «H25»? »
Да. Набор файлов может выглядеть, на пример, так:

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
Благодарности: 8087

Профиль | Отправить PM | Цитировать


subuday77, хоть убейте, никак не могу понять, как в наборе:
Код: Выделить весь код
12345001.Н10
12345001.Н12
12345002.Н10
12345002.Н12
12345003.Н10
12345004.Н10
12345004.Н12
может не хватать «12345003.В12».

Отправлено: 00:47, 20-05-2013 | #18


Новый участник


Сообщения: 46
Благодарности: 2

Профиль | Отправить PM | Цитировать


Iska, опечатка! Простите.

Foreigner, похоже, работает! Спасибо огромное! Переходим к полевым испытаниям.

Отправлено: 14:37, 20-05-2013 | #19



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка последовательности в файлах.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - 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




 
Переход