Показать полную графическую версию : [решено] распаковка архивов по нужным папкам
Добрый день, форумчане.
Никогда не писал батники, но вот на работе возникла необходимость.
Суть: есть zip архивы вида хх_хххх_[N] и есть папки на сетевом диске вида [N]-[название].
где хх - числа(иногда первая буква, а вторая цифра), хххх - цифры, [N] - номер вида 01,02 ... 43 , который соответствует начальному названию папки на сетевом диске; [название] - название папки.
Необходимо, чтобы архивы разархивировались в соответствующие папки на сетевом диске( хх_ххх_01.zip разархивировался в 01-[название]).
Зарание спасибо за помощь!
Если я правильно понял вопрос то...
@for /f "tokens=1,2,3,4 delims=_." %%I in ('dir /b "полный путь к архивам\??_????_*.zip"') do @for /f "tokens=1,2 delims=-" %%M in ('dir /b "полный путь к папкам\??-*"') do @if "%%K"=="%%M" @7z x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N"
или так
@for /f "tokens=1,2,3,4 delims=_." %%I in ('dir /b "полный путь к архивам\??_????_*.zip"') do @for /f "tokens=1,2 delims=-" %%M in ('dir /b "полный путь к папкам\%%K-*"') do @7z x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N"
попробывал оба варианта
в случае если батник лежит где угодно(у меня в корне на диске с) вот такая ошибка:
"7z" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
в случае если батник лежит в папке 7z выдает вот такую ошибку:
Error:
cannot find archive
… @"%ProgramFiles%\7-Zip\7z.exe" x …
в случае если батник лежит в папке 7z выдает вот такую ошибку:
Error:
cannot find archive »
а можно увидеть "полный путь к архивам\??_????_*.zip"?
а за одно и "полный путь к папкам\??-*"?
путь такой: "d:\2\??_????_*.zip" , это я пока пробую и записал путь локально на своем компе
теперь только вторая ошибка:
Error:
cannot find archive
кстати, Bob256, а что означает " ??_????_*.zip " ??
а что означает " ??_????_*.zip " ?? »
шаблон поиска (http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0)попробуй в командной строке dir /b "d:\2\??_????_*.zip"
muguch, Это (http://forum.oszone.net/post-1987786.html#post1987786) не вы?
Bob256, через командную строку все архивы в данной папке находит.
полный путь к папкам так же пробный: с:\2\
yurfed, нет не я.
@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"
)
)
)
)
Bob256, пишет :
archive c:\d2_0912_02.zip
Файл не найден
почему он ищет в корне С, если указан путь в папку с:\2\ ?
но такой архив в папке d:\2\ сущетсвует...
но такой архив в папке d:\2\ сущетсвует... »
где искать будем? set src=D:\2\ куда положим? set dst=D:\2\
положил батник в папку где лежат архивы d:\2\
после запуска пишет:
archive D:\2\d2_0912_02.zip
not exist D:\2\02-*
А папка D:\2\02-* есть? Суть: есть zip архивы вида хх_хххх_[N] и есть папки на сетевом диске вида [N]-[название]. »
Bob256, по такому пути нет
они находяться в папке С:\2\
Цитата muguch: Суть: есть zip архивы вида хх_хххх_[N] и есть папки на сетевом диске вида [N]-[название]. » »
все правильно, просто архивы не находятся в одной и тойже директории, что папки
set src=D:\2\
set dst=C:\2\:wall:
Bob256, и так делал
пишет:
archive c:\d2_0912_02.zip
Файл не найден »
Пропустил :search:
@echo off
set src=D:\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 "%dst%%%K-*"') do (
echo extract to %%~dpnM-%%N
"%ProgramFiles%\7-Zip\7z.exe" x "%%~dpnI_%%J_%%K.%%L" -oc:"%%~dpnM-%%N"
)
)
)
)
все равно почему то ищет архив в папке С:\2\
Error:
cannot find archive
archive c:\2\d2_0912_02.zip
extract to c:\2\02-*
7-Zip 4.65 Copyright (c) 1999-2009 Igor Pavlov 2009-02-03
@echo off
set src=D:\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 %src%%%I_%%J_%%K.%%L
if not exist "%dst%%%K-*" (echo not exist %dst%%%K-*) else (
for /f "tokens=1,2 delims=-" %%M in ('dir /b "%dst%%%K-*"') do (
echo extract to %dst%%%M-%%N
"%ProgramFiles%\7-Zip\7z.exe" x "%src%%%I_%%J_%%K.%%L" -oc:"%dst%%%M-%%N"
)
)
)
)
и без лишних сообщений
@echo off
set src=D:\2\
set dst=C:\2\
for /f "tokens=1,2,3,4 delims=_." %%I in ('dir /b "%src%??_????_*.zip"') do for /f "tokens=1,2 delims=-" %%M in ('dir /b "%dst%%%K-*"') do "%ProgramFiles%\7-Zip\7z.exe" x "%src%%%I_%%J_%%K.%%L" -oc:"%dst%%%M-%%N"
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.