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

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

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

Пользователь


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

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


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

Задача такая: в сетевой папке найти архивы 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, и чтобы это были именно цифры.

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

Отправлено: 11:11, 03-02-2015

 

Ветеран


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

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


Цитата kirillius:
с определённым количеством символов до 2015, и чтобы это были именно цифры. »
Код:
Код: Выделить весь код
@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». Принцип понятен?
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:21, 03-02-2015 | #2



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

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


Пользователь


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

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


Цитата Iska:
Принцип понятен? »
Как отобрать вроде понял, но как потом начать распаковку этих архивов?

Отправлено: 11:50, 03-02-2015 | #3


Ветеран


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

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


Как-то так (не проверялось):
Код: Выделить весь код
@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

Отправлено: 12:04, 03-02-2015 | #4


Пользователь


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

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


Цитата Iska:
Как-то так (не проверялось): »
Проверил на локальных папках - что-то не получилось...

Код: Выделить весь код
@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

Отправлено: 12:28, 03-02-2015 | #5


Ветеран


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

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


Запустите командную строку. Вставьте в неё команду:
Код: Выделить весь код
dir /b /a:-d "C:\Users\username\Desktop\folder_01\*2015.rar" "C:\Users\username\Desktop\folder_01\*2015.zip"
Скопируйте вывод этой команды из окна командной строки сюда.

Отправлено: 12:44, 03-02-2015 | #6


Пользователь


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

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


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>

Отправлено: 12:47, 03-02-2015 | #7


Ветеран


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

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


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
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:22, 03-02-2015 | #8


Пользователь


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

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


Iska, спасибо большое, получилось (локально).
А с сетевыми папками всё-таки не хочет...

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

Последний раз редактировалось kirillius, 03-02-2015 в 14:26.


Отправлено: 14:14, 03-02-2015 | #9


Ветеран


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

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


Цитата kirillius:
Разобрался (в путях были русские символы, из-за этого не работало). »
Кодировка пакетного файла должна быть OEM/866.

Отправлено: 08:37, 04-02-2015 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск и копирование по маске LepeT Скриптовые языки администрирования Windows 9 11-11-2014 20:16
CMD/BAT - [решено] распаковка архивов по нужным папкам muguch Скриптовые языки администрирования Windows 28 14-09-2012 11:13
Поиск слова в txt затем поиск по маске "(383)" и вывод инфы rustoss AutoIt 10 29-09-2011 15:27
Разное - РАСПАКОВКА АРХИВОВ MZ (ОПК 3.19) Vamp1re Тест-форум 0 13-12-2010 15:03
распаковка больших архивов greeka Общий по FreeBSD 7 19-07-2004 09:21




 
Переход