CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
-
FantomasAnand
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Добрый день!
В папке хранятся много zip архивов. Нужно сделать скрипт проверки zip архивов на наличие в нем Файла1 & Файла2. Если такой архив находится, то копировать его в другую папку.
В папке хранятся много zip архивов. Нужно сделать скрипт проверки zip архивов на наличие в нем Файла1 & Файла2. Если такой архив находится, то копировать его в другую папку.
-
alpap
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Файла1 и Файла2 - есть
Файла1 - есть, Файла2 - нет
Файла1 - нет, Файла2 - есть
Файла1 и Файла2 - нет
какой вариант?
когда ответите, подумайте: для всех архивов идентичная проверка или для каждого своя, совпасть должно имя.расширение файла(ов) или кол-во (есть 1 файл или 2 или ни одного)
Файла1 - есть, Файла2 - нет
Файла1 - нет, Файла2 - есть
Файла1 и Файла2 - нет
какой вариант?
когда ответите, подумайте: для всех архивов идентичная проверка или для каждого своя, совпасть должно имя.расширение файла(ов) или кол-во (есть 1 файл или 2 или ни одного)
-
FantomasAnand
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Угу. Не хватает такой простой команды как у rar — «vb», отобразить только имена с путями.
-
FantomasAnand
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Цитата FantomasAnand:
обязательное присутствие обоих файлов в архиве
это тоже важно
Цитата alpap:
для всех архивов идентичная проверка или для каждого своя
т.е. файлы именно: a.txt и b.txt должны оба присутствовать в каждом архиве или в другом архиве будут c.txt и d.txt, в третьем 1.txt и 2.txt
обязательное присутствие обоих файлов в архиве
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
это тоже важно
Цитата alpap:
для всех архивов идентичная проверка или для каждого своя
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
т.е. файлы именно: a.txt и b.txt должны оба присутствовать в каждом архиве или в другом архиве будут c.txt и d.txt, в третьем 1.txt и 2.txt
-
alpap
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Цитата alpap:
т.е. файлы именно: a.txt и b.txt должны оба присутствовать в каждом архиве или в другом архиве будут c.txt и d.txt, в третьем 1.txt и 2.txt
Я понял так: есть набор архивов. Надо получить листинг оглавления каждого из архивов, и те архивы, в которых будут находиться пара искомых имён файлов, скопировать по заданному адресу. Т.е. всего два имени файлов у нас есть, и их надо найти в оглавлениях.
т.е. файлы именно: a.txt и b.txt должны оба присутствовать в каждом архиве или в другом архиве будут c.txt и d.txt, в третьем 1.txt и 2.txt
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Я понял так: есть набор архивов. Надо получить листинг оглавления каждого из архивов, и те архивы, в которых будут находиться пара искомых имён файлов, скопировать по заданному адресу. Т.е. всего два имени файлов у нас есть, и их надо найти в оглавлениях.
-
Iska
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Iska верно. Копался, но такого никак не могу добиться.
-
FantomasAnand
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Iska верно. Копался, но такого никак не могу добиться.
-
FantomasAnand
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
FantomasAnand, Архиватора Zip у меня нет. Попробуйте. Не знаю, насколько код чувствителен к версии 7z. Я предположил, что в каждом архиве искомые имена уникальны, то есть не повторяются. Если это не так, можно переделать
Код:
Код:
Код: Выделить всё
@Echo Off
Set "FileIn=Z:\Box_In\*.zip"
Set "Exists="data1.cab" "data2.cab""
Set /A NExists=2
Set "BoxOut=Z:\Box_Out"
Set "Arc="C:\Program Files\7-Zip\7z.exe" l -r"
Set "FileTmp=%Tmp%\%~nx0.tmp"
FOR /F "usebackq delims=" %%i IN (`dir "%FileIn%" /S /B /A:-D 2^>nul`) DO Call :CheckZip "%%i"
Del "%FileTmp%" 2>nul
GoTo :Eof
:CheckZip
%Arc% %1 %Exists% >"%FileTmp%"
Set /A N=0
FOR /F "usebackq tokens=5 delims= " %%s IN ("%FileTmp%") DO Set /A N=%%s 2>nul
If %N% GEQ %NExists% Copy %1 "%BoxOut%" >nul
GoTo :Eof-
alpap
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Цитата alpap:
ну приложу свой вариант раз уже начал, хотя он похож на вариант megaloman
Цитата Мао Дзе Дун:
Пусть расцветают сто цветов, пусть соперничают сто школ
Ни у кого нет права на абсолютную истину.
Цитата alpap:
findstr /c:"%zf1%"
ищем файл a.txt ? и находим tralala.txt тоже? Надо сразу ИМХО при вызове архиватора перечислить искомое.
ИМХО ....A тоже не обязательно такой атрибут.
Мне не удалось под For затолкать вызов архиватора, чтобы присвоить переменной последнюю строку листинга архиватора.
Пришлось делать промежуточный файл.
Меня это гнетёт.
ну приложу свой вариант раз уже начал, хотя он похож на вариант megaloman
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Цитата Мао Дзе Дун:
Пусть расцветают сто цветов, пусть соперничают сто школ
Ни у кого нет права на абсолютную истину.
Цитата alpap:
findstr /c:"%zf1%"
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
ищем файл a.txt ? и находим tralala.txt тоже? Надо сразу ИМХО при вызове архиватора перечислить искомое.
ИМХО ....A тоже не обязательно такой атрибут.
Мне не удалось под For затолкать вызов архиватора, чтобы присвоить переменной последнюю строку листинга архиватора.
Пришлось делать промежуточный файл.
Меня это гнетёт.
-
megaloman
Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Цитата megaloman:
и находим tralala.txt тоже?
Да. После того как начал писать код пропало все желание делать эту задачу на cmd, поэтому и
Цитата megaloman:
....A тоже
и -r не использовал, да что там говорить, здесь имена заданы и найти их можно постаравшись, а вот вывести все имена чтобы можно было с ними работать мне когда-то пришлось такую конструкцию писать:
Код:
Это мыслимо? Это просто вывод имен!
и находим tralala.txt тоже?
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
Да. После того как начал писать код пропало все желание делать эту задачу на cmd, поэтому и
Цитата megaloman:
....A тоже
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
и -r не использовал, да что там говорить, здесь имена заданы и найти их можно постаравшись, а вот вывести все имена чтобы можно было с ними работать мне когда-то пришлось такую конструкцию писать:
Код:
Код: Выделить всё
@echo off
set "exp=7z"
set "arch=%ProgramFiles%\7-Zip\7z.exe"
for /f "delims=" %%a in ('dir /a-d/b "*.%exp%"') do call :# "%%a"
pause& exit
:#
setlocal enabledelayedexpansion
for /f "delims=:" %%a in ('""%arch%" l "%~1"|findstr /rn /c:"^---""') do set /a n+=1& set "v!n!=%%a"& set /a "nd=v1+1,kd=v2-1"
for /f "tokens=5*" %%a in ('"for /l %%a in (!nd!,1,!kd!) do @"%arch%" l "%~1"|find /n /v ""|find "[%%a]""') do echo %%b
endlocal
exit /bЭто мыслимо? Это просто вывод имен!