Показать полную графическую версию : [решено] Распаковка *.gz и перенос в другую папку
Всем здравствуйте.
Если кому не сложно, не могли бы подсказать код для батника, который выполнял бы следующее:
- распаковывал первый архив GeoLiteCity.dat.gz (в котором файл GeoLiteCity.dat)
- переносил файл из C:\1\GeoLiteCity.dat в D:\GeoLiteCity.dat
- распаковывал второй архив GeoIP.dat.gz (в котором файл GeoIP.dat)
- переносил файл из C:\1\GeoIP.dat в D:\GeoIP.dat
В системе стоит WinRar
Буду ооочень благодарен :)
megaloman
16-03-2018, 12:39
@Echo off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe" e -y"
Call :UnArc "Z:\Soft_Arc\GeoLiteCity.dat.gz" "GeoLiteCity.dat" "Z:\"
Call :UnArc "Z:\Soft_Arc\GeoIP.dat.gz" "GeoIP.dat" "Z:\"
GoTo :Eof
:UnArc
If Not Exist %1 (Echo %1 Not Exist &Exit /B 404)
Pushd %3 ||(Echo %3 &Exit /B 404)
%Arc% %1 %2
Set /A Out=%ErrorLevel%
Popd
Exit /B %Out%
Пропишите свои пути файлов Call :UnArc "Путь к архиву" "имя файла" "куда извлекаем"
Попутно вопросы:
В архиве 1 файл?
Почему Вы извлекаете файл в C:\1\GeoIP.dat а не сразу в D:\
megaloman
1. В каждом архиве по одному файлу
2. У меня стоит веб сервер на диске С, т.е. папка доменов на С.
У меня система хитрая вышла:
а) создан php-скрипт, который качает базы GeoIP (а базы эти в *.gz-рахивах)
б) через cron этот скрипт запускается, чтобы файлы скачались
в) но файлы нужно хранить в 4 разных папках, которые расположены на диске D
Т.е. файлы нужно скачать, распаковать и в таком виде уже сунуть на диск D
Хм... кстати, я не предусмотрел этого в топике изначально - возможно ли сделать так, чтобы было несколько путей, куда файлы копировались бы? То есть два этих файла надо копировать сразу в: D:\1, D:\2, D:\3 и D:\4
megaloman
16-03-2018, 13:04
biffick, @Echo off
Set "Arc="%ProgramFiles%\WinRar\Rar.exe" e -y"
Call :UnArc "Z:\Soft_Arc\GeoLiteCity.dat.gz" "GeoLiteCity.dat" "Z:\1\"
Call :UnArc "Z:\Soft_Arc\GeoIP.dat.gz" "GeoIP.dat" "Z:\1\"
GoTo :Eof
:UnArc
If Not Exist %1 (Echo %1 Not Exist &Exit /B 404)
Pushd %3 ||(Echo %3 &Exit /B 404)
%Arc% %1 %2
Set /A Out=%ErrorLevel%
Popd
Exit /B %Out%Пропишите свои пути
В архиве 1 файл? »
там даже файла нет, .gz - это сжатый поток, а не архив
megaloman, код не распаковывает.
1. Если в путях есть русские символы, то вообще батник ничего не показывает.
2. Если всё окей с символами в пути, то получа такое сообщение:
C:\GeoLiteCity.dat.gz - не архив RAR
Нет файлов для извлечения
megaloman
16-03-2018, 23:13
biffick, попробуйте использовать winrarSet "Arc="%ProgramFiles%\WinRar\WinRar.exe" e -y"Чтобы не было проблем с русскими символами,следует батник создавать и сохранять в 866 кодировке (DOS)
megaloman, да, так распаковал и перенёс.
Можно сделать схему такую:
Файл C:\GeoIP.dat -> переносить в папку C:\papka\
Файл C:\GeoLiteCity.dat -> переносить в папку C:\papka\
Файл C:\GeoIP.dat -> переносить в папку C:\papka_p\
Файл C:\GeoLiteCity.dat -> переносить в папку C:\papka_p\
Файл C:\GeoIP.dat -> переносить в папку C:\papka_r\
Файл C:\GeoLiteCity.dat -> переносить в папку C:\papka_r\
Файл C:\GeoIP.dat -> переносить в папку C:\papka_e\
Файл C:\GeoLiteCity.dat -> переносить в папку C:\papka_e\
(пути и названия файлов и папок, естественно, сам поменяю)
Т.е. нужно именно сделать так, чтобы я список сам мог менять.
В общем, нужно переносить два этих распакованных файла по разным папкам с заменой без подтверждения.
megaloman
16-03-2018, 23:41
biffick, @Echo off
Set "Arc="%ProgramFiles%\WinRar\WinRar.exe" e -y"
Call :UnArc "Z:\Soft_Arc\GeoLiteCity.dat.gz" "GeoLiteCity.dat" "Z:\1\" "Z:\2\" "Z:\3\" "Z:\4\"
Call :UnArc "Z:\Soft_Arc\GeoIP.dat.gz" "GeoIP.dat" "Z:\1\" "Z:\2\" "Z:\3\" "Z:\4\"
GoTo :Eof
:UnArc
If Not Exist %1 (Echo %1 Not Exist &Exit /B 404)
Md %3 2>nul
Pushd %3
%Arc% %1 %2
Set /A Out=%ErrorLevel%
Popd
If Not %Out%==0 Exit /B %Out%
Set "FName=%~3\%~2"
:Begin
Shift /3
If "%~3"=="" Exit /B %Out%
Md %3 2>nul
Copy "%FName%" %3 >nul
Set /A Out+=%ErrorLevel%
GoTo :Begin
Exit /B %Out%Количество и имена выходных папок произвольно, как укажете в параметрах
megaloman, да, всё прекрасно отрабатывает! Большое Вам спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.