CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Ответить
 • Просмотры: 1
Аватара пользователя
FantomasAnand

CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение FantomasAnand »

Добрый день!



В папке хранятся много zip архивов. Нужно сделать скрипт проверки zip архивов на наличие в нем Файла1 & Файла2. Если такой архив находится, то копировать его в другую папку.
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение alpap »

Файла1 и Файла2 - есть

Файла1 - есть, Файла2 - нет

Файла1 - нет, Файла2 - есть

Файла1 и Файла2 - нет

какой вариант?

когда ответите, подумайте: для всех архивов идентичная проверка или для каждого своя, совпасть должно имя.расширение файла(ов) или кол-во (есть 1 файл или 2 или ни одного)
Аватара пользователя
FantomasAnand

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение FantomasAnand »

Угу. Не хватает такой простой команды как у rar — «vb», отобразить только имена с путями.
Аватара пользователя
FantomasAnand

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение FantomasAnand »

Цитата FantomasAnand:



обязательное присутствие обоих файлов в архиве
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 »

Цитата alpap:



т.е. файлы именно: a.txt и b.txt должны оба присутствовать в каждом архиве или в другом архиве будут c.txt и d.txt, в третьем 1.txt и 2.txt
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов




Я понял так: есть набор архивов. Надо получить листинг оглавления каждого из архивов, и те архивы, в которых будут находиться пара искомых имён файлов, скопировать по заданному адресу. Т.е. всего два имени файлов у нас есть, и их надо найти в оглавлениях.
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение Iska »

Iska верно. Копался, но такого никак не могу добиться.
Аватара пользователя
FantomasAnand

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение FantomasAnand »

Iska верно. Копался, но такого никак не могу добиться.
Аватара пользователя
FantomasAnand

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение FantomasAnand »

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 »

Цитата alpap:



ну приложу свой вариант раз уже начал, хотя он похож на вариант megaloman
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов





Цитата Мао Дзе Дун:



Пусть расцветают сто цветов, пусть соперничают сто школ



Ни у кого нет права на абсолютную истину.


Цитата alpap:



findstr /c:"%zf1%"
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов




ищем файл a.txt ? и находим tralala.txt тоже? Надо сразу ИМХО при вызове архиватора перечислить искомое.

ИМХО ....A тоже не обязательно такой атрибут.

Мне не удалось под For затолкать вызов архиватора, чтобы присвоить переменной последнюю строку листинга архиватора.

Пришлось делать промежуточный файл.

Меня это гнетёт.
Аватара пользователя
megaloman

Re: CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов

Сообщение megaloman »

Цитата megaloman:



и находим 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

Это мыслимо? Это просто вывод имен!
Ответить

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