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

Аватара пользователя
Foreigner

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

Сообщение Foreigner »

Мой вариант



Код:

Код: Выделить всё

@echo off
setlocal
pushd "C:\test"
for /f %%i in ('dir /b') do set "ext_%%~xi=%%~xi"
for /f "tokens=2 delims==" %%i in ('set ext_') do call:1 "%%i"
popd
goto:eof
:1
for %%i in (*%~1) do if not defined min (set min=%%~ni) else (set max=%%~ni)
for /l %%i in (%min%,1,%max%) do if not exist %%i%~1 echo %%i%~1
for %%i in (min max) do set "%%i="
Аватара пользователя
Iska

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

Сообщение Iska »

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




Цитата subuday77:



Они всегда будут иметь следующий вид: H01 H02 H03 и и.д.
CMD/BAT - [решено] Проверка последовательности в файлах.




Пропуски в расширениях могут быть — «H01», «H02» и сразу, например, «H04» или «H25»?
Аватара пользователя
Foreigner

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

Сообщение Foreigner »

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

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

Сообщение Foreigner »

Цитата:



Один «&»?!



Тогда сразу закончит работу & -- выполняется независимо от errorlevel. Попробуй в консоли:



Код:

Код: Выделить всё

pushd C:\Windows || echo bad & exit
Аватара пользователя
Iska

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

Сообщение Iska »

Тогда так:



Код:

Код: Выделить всё

pushd "%dir%" || (echo Wrong Path & goto:eof)

Я последнее время совсем пространство не экономлю, пишу так:



Код:

Код: Выделить всё

pushd "%dir%" || (
    echo Wrong Path
    goto:eof
)

Жаль, не всегда внутри цикла интерпретатор команд разбирает такой афронт.
Аватара пользователя
subuday77

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

Сообщение subuday77 »

Iska,


Цитата Iska:



Пропуски в расширениях могут быть — «H01», «H02» и сразу, например, «H04» или «H25»?
CMD/BAT - [решено] Проверка последовательности в файлах.




Да. Набор файлов может выглядеть, на пример, так:



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
Аватара пользователя
Iska

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

Сообщение Iska »

subuday77, хоть убейте, никак не могу понять, как в наборе:



Код:

Код: Выделить всё

12345001.Н10
12345001.Н12
12345002.Н10
12345002.Н12
12345003.Н10
12345004.Н10
12345004.Н12

может не хватать «12345003.В12».
Аватара пользователя
subuday77

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

Сообщение subuday77 »

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



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

Вернуться в «Скриптовые языки администрирования Windows»