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

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

Ответить
Настройки темы
CMD/BAT - [решено] распаковка архивов по нужным папкам

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


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

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


Добрый день, форумчане.
Никогда не писал батники, но вот на работе возникла необходимость.
Суть: есть zip архивы вида хх_хххх_[N] и есть папки на сетевом диске вида [N]-[название].
где хх - числа(иногда первая буква, а вторая цифра), хххх - цифры, [N] - номер вида 01,02 ... 43 , который соответствует начальному названию папки на сетевом диске; [название] - название папки.

Необходимо, чтобы архивы разархивировались в соответствующие папки на сетевом диске( хх_ххх_01.zip разархивировался в 01-[название]).

Зарание спасибо за помощь!

Отправлено: 08:39, 12-09-2012

 

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


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

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


Если я правильно понял вопрос то...
PHP код: Выделить весь код

@for /"tokens=1,2,3,4 delims=_." %%I in ('dir /b "полный путь к архивам\??_????_*.zip"') do @for /"tokens=1,2 delims=-" %%M in ('dir /b "полный путь к папкам\??-*"') do @if "%%K"=="%%M" @7z x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N" 


или так
PHP код: Выделить весь код

@for /"tokens=1,2,3,4 delims=_." %%I in ('dir /b "полный путь к архивам\??_????_*.zip"') do @for /"tokens=1,2 delims=-" %%M in ('dir /b "полный путь к папкам\%%K-*"') do @7z x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N" 



Последний раз редактировалось Bob256, 12-09-2012 в 17:46.


Отправлено: 17:32, 12-09-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


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


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

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


попробЫвал оба варианта

в случае если батник лежит где угодно(у меня в корне на диске с) вот такая ошибка:
"7z" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

в случае если батник лежит в папке 7z выдает вот такую ошибку:
Error:
cannot find archive

Отправлено: 08:53, 13-09-2012 | #3


Ветеран


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

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


Код: Выделить весь код
… @"%ProgramFiles%\7-Zip\7z.exe" x …

Отправлено: 09:21, 13-09-2012 | #4


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


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

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


Цитата muguch:
в случае если батник лежит в папке 7z выдает вот такую ошибку:
Error:
cannot find archive »
а можно увидеть "полный путь к архивам\??_????_*.zip"?
а за одно и "полный путь к папкам\??-*"?

Последний раз редактировалось Bob256, 13-09-2012 в 09:59.


Отправлено: 09:43, 13-09-2012 | #5


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


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

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


путь такой: "d:\2\??_????_*.zip" , это я пока пробую и записал путь локально на своем компе

теперь только вторая ошибка:
Error:
cannot find archive

кстати, Bob256, а что означает " ??_????_*.zip " ??

Последний раз редактировалось muguch, 13-09-2012 в 09:57. Причина: дополнение


Отправлено: 09:55, 13-09-2012 | #6


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


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

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


Цитата muguch:
а что означает " ??_????_*.zip " ?? »
шаблон поискапопробуй в командной строке
Код: Выделить весь код
dir /b "d:\2\??_????_*.zip"

Отправлено: 10:19, 13-09-2012 | #7


Аватара для yurfed

Ветеран


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

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


muguch, Это не вы?

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 10:32, 13-09-2012 | #8


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


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

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


Bob256, через командную строку все архивы в данной папке находит.
полный путь к папкам так же пробный: с:\2\

yurfed, нет не я.

Отправлено: 11:23, 13-09-2012 | #9


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


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

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


Код: Выделить весь код
@echo off
set src=C:\2\
set dst=C:\2\
if not exist "%src%??_????_*.zip" (echo not exist  %src%??_????_*.zip) else (
  for /f "tokens=1,2,3,4 delims=_." %%I in ('dir /b "%src%??_????_*.zip"') do (
    echo archive  %%~dpnI_%%J_%%K.%%L
    if not exist "%dst%%%K-*" (echo not exist %%~dpnK-*) else (
      for /f "tokens=1,2 delims=-" %%M in ('dir /b "%%K-*"') do (
        echo extract to  %%~dpnM-%%N
        "%ProgramFiles%\7-Zip\7z.exe" x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N"
      )
    )
  )
)

Отправлено: 11:53, 13-09-2012 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Распаковка большого количества zip (пакетная распаковка zip из разных папок) dark-------13 Скриптовые языки администрирования Windows 3 12-03-2013 13:00
System/Проект - Доступ к 3 папкам или как ограничить не нужным Rezor666 Сетевые технологии 10 09-06-2012 13:42
Разное - РАСПАКОВКА АРХИВОВ MZ (ОПК 3.19) Vamp1re Тест-форум 0 13-12-2010 15:03
Доступ - как зайти на сервер под нужным мне пользователем Rognorek Microsoft Windows 2000/XP 5 27-07-2007 09:08
распаковка больших архивов greeka Общий по FreeBSD 7 19-07-2004 09:21




 
Переход