CMD/BAT - [решено] Поиск и распаковка архивов по маске

Ответить
Аватара пользователя
kirillius

CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

Здравствуйте.



Задача такая: в сетевой папке найти архивы ZIP или RAR с определённым именем и распаковать их в другую сетевую папку.

На данный момент скрипт выглядит так:





Код:

Код: Выделить всё

"C:\Program Files\7-Zip\7z.exe" x "\\СетевойАдрес\СетеваяПапка1\*2015.rar" -o"\\СетевойАдрес\СетевайПапка2" -r -y
"C:\Program Files\7-Zip\7z.exe" x "\\СетевойАдрес\СетеваяПапка1\*2015.zip" -o"\\СетевойАдрес\СетевайПапка2" -r -y
PAUSE

Но нужно усовершенствовать скрипт, т.к. до "2015.rar" и "2015.zip" может идти что угодно, а нужно, чтобы выбирались файлы с определённым количеством символов до 2015, и чтобы это были именно цифры.



Можно ли такое реализовать, и как?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение Iska »

Цитата kirillius:



с определённым количеством символов до 2015, и чтобы это были именно цифры.
CMD/BAT - [решено] Поиск и распаковка архивов по маске




Код:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d "C:\Песочница\065\*2015.rar" "C:\Песочница\065\*2015.zip" ^| findstr.exe /r /c:"^[0-9][0-9][0-9][0-9][0-9]2015.rar$" /c:"^[0-9][0-9][0-9][0-9][0-9]2015.zip$"`
) do echo [%%~i]
endlocal
exit /b 0

отберёт Вам .zip и .rar архивы, имена которых начинаются на 5 цифр и заканчиваются на «2015». Принцип понятен?
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

Цитата Iska:



Принцип понятен?
CMD/BAT - [решено] Поиск и распаковка архивов по маске




Как отобрать вроде понял, но как потом начать распаковку этих архивов?
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение Iska »

Как-то так (не проверялось):



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d "\\СетевойАдрес\СетеваяПапка1\*2015.rar" "\\СетевойАдрес\СетеваяПапка1\*2015.zip" ^| findstr.exe /r /c:"^[0-9][0-9][0-9][0-9][0-9]2015.rar$" /c:"^[0-9][0-9][0-9][0-9][0-9]2015.zip$"`
) do "%ProgramFiles%\7-Zip\7z.exe" x "\\СетевойАдрес\СетеваяПапка1\%%~i" -o"\\СетевойАдрес\СетевайПапка2" -r -y
endlocal
exit /b 0
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

Цитата Iska:



Как-то так (не проверялось):
CMD/BAT - [решено] Поиск и распаковка архивов по маске




Проверил на локальных папках - что-то не получилось...





Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d "C:\Users\username\Desktop\folder_01\*2015.rar" "C:\Users\username\Desktop\folder_01\*2015.zip" ^| findstr.exe /r /c:"^[0-9][0-9][0-9][0-9]2015.rar$" /c:"^[0-9][0-9][0-9][0-9]2015.zip$"`
) do "%ProgramFiles%\7-Zip\7z.exe" x "C:\Users\username\Desktop\folder_01\%%~i" -o"C:\Users\username\Desktop\folder_02\" -r -y
endlocal
exit /b 0
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение Iska »

Запустите командную строку. Вставьте в неё команду:



Код:

Код: Выделить всё

dir /b /a:-d "C:\Users\username\Desktop\folder_01\*2015.rar" "C:\Users\username\Desktop\folder_01\*2015.zip"

Скопируйте вывод этой команды из окна командной строки сюда.
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

C:\Users\username>dir /b /a:-d "C:\Users\username\Desktop\folder_01\*2015.ra

r" "C:\Users\username\Desktop\folder_01\*2015.zip"

21012015.RAR

19012015.ZIP

20012015.ZIP

22012015.ZIP

23012015.ZIP



C:\Users\username>
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

kirillius, попробуйте добавить «/i» параметром к «findstr.exe»:



Код:

Код: Выделить всё

@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
	`2^>nul dir /b /a:-d "\\СетевойАдрес\СетеваяПапка1\*2015.rar" "\\СетевойАдрес\СетеваяПапка1\*2015.zip" ^| findstr.exe /i /r /c:"^[0-9][0-9][0-9][0-9][0-9]2015.rar$" /c:"^[0-9][0-9][0-9][0-9][0-9]2015.zip$"`
) do "%ProgramFiles%\7-Zip\7z.exe" x "\\СетевойАдрес\СетеваяПапка1\%%~i" -o"\\СетевойАдрес\СетевайПапка2" -r -y
endlocal
exit /b 0
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

Iska, спасибо большое, получилось (локально).

А с сетевыми папками всё-таки не хочет...



Разобрался (в путях были русские символы, из-за этого не работало).
Аватара пользователя
kirillius

Re: CMD/BAT - [решено] Поиск и распаковка архивов по маске

Сообщение kirillius »

Цитата kirillius:



Разобрался (в путях были русские символы, из-за этого не работало).
CMD/BAT - [решено] Поиск и распаковка архивов по маске




Кодировка пакетного файла должна быть OEM/866.
Ответить

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