|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов |
|
|
CMD/BAT - [решено] Проверка архива zip на наличие определенных файлов
|
Новый участник Сообщения: 48 |
Добрый день!
В папке хранятся много zip архивов. Нужно сделать скрипт проверки zip архивов на наличие в нем Файла1 & Файла2. Если такой архив находится, то копировать его в другую папку. |
|
Отправлено: 18:13, 07-11-2017 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Файла1 и Файла2 - есть
Файла1 - есть, Файла2 - нет Файла1 - нет, Файла2 - есть Файла1 и Файла2 - нет какой вариант? когда ответите, подумайте: для всех архивов идентичная проверка или для каждого своя, совпасть должно имя.расширение файла(ов) или кол-во (есть 1 файл или 2 или ни одного) |
Последний раз редактировалось alpap, 07-11-2017 в 18:34. Отправлено: 18:28, 07-11-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Файла1 и Файла2 - есть.
в архиве должны быть как минимум 2 файла с определенными именами. Условие : обязательное присутствие обоих файлов в архиве с определенными именами. |
Отправлено: 11:43, 09-11-2017 | #3 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать |
Отправлено: 12:38, 09-11-2017 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата alpap:
|
||
Отправлено: 13:01, 09-11-2017 | #5 |
Новый участник Сообщения: 48
|
Профиль | Отправить PM | Цитировать Iska верно. Копался, но такого никак не могу добиться.
|
Отправлено: 17:04, 09-11-2017 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать 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 |
------- Отправлено: 22:57, 09-11-2017 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать ага, уже ответили, ну приложу свой вариант раз уже начал, хотя он похож на вариант megaloman, но как раз учитывал повторяемость файлов, т.е. должно быть минимум два заданных, допускается более 2х, но не менее, но эти 2 обязательно
"a.txt" и "b.txt" - если как минимум эти два файла будут в архиве, то все такие архивы будут сохранены в папку "C:\b_arch" @echo off set "d_out=C:\b_arch" set "exp=7z" set "ar=%ProgramFiles%\7-Zip\7z.exe" set "zf1=a.txt"& set "zf2=b.txt" if not exist "%d_out%" md "%d_out%" for /f "delims=" %%A in ('2^>nul dir /a-d/b "*.%exp%"') do ( setlocal enabledelayedexpansion for /f "tokens=5*" %%a in ('"%ar%" l "%%A"^|findstr /c:" ....A "^|findstr /c:"%zf1%" /c:"%zf2%"') do set /a n+=1& set "a!n!=%%A" if not "!a2!"=="" >nul copy "!a2!" "%d_out%" endlocal ) pause |
Последний раз редактировалось alpap, 10-11-2017 в 00:06. Отправлено: 23:58, 09-11-2017 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата Мао Дзе Дун:
Цитата alpap:
ИМХО ....A тоже не обязательно такой атрибут. Мне не удалось под For затолкать вызов архиватора, чтобы присвоить переменной последнюю строку листинга архиватора. Пришлось делать промежуточный файл. Меня это гнетёт. |
|||
------- Последний раз редактировалось megaloman, 10-11-2017 в 00:45. Отправлено: 00:34, 10-11-2017 | #9 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
Цитата megaloman:
@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 |
||
Отправлено: 12:26, 10-11-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Массовая замена определенных файлов в определенных папках CMD/BAT | urabusu | Скриптовые языки администрирования Windows | 6 | 27-06-2019 21:06 | |
Проверка на наличие интернета | Qweezy | AutoIt | 1 | 14-06-2017 13:37 | |
CMD/BAT - [решено] Проверка папки на наличие файлов за сегодня | FantomasAnand | Скриптовые языки администрирования Windows | 1 | 26-02-2015 04:04 | |
CMD/BAT - Проверка на наличие процесса | tazik9 | Скриптовые языки администрирования Windows | 0 | 23-01-2011 16:56 | |
CMD/BAT - [решено] Проверка установки определенных файлов в директорию | korenza | Скриптовые языки администрирования Windows | 17 | 03-06-2010 13:25 |
|