Это старая версия документа!
Архивирование каталога
Архивировние каталога с файлами
Парметры передаются в скрипте
- arhive.bat
cls @echo off echo Архивация каталогов rem Каталог источник set _in=D:\BackUP\Архив rem Каталог получатель set _out=E:\Documents rem Каталог с архиватором set _arcpath=D:\BackUP\Архив\Скрипты 7z\7z1801-extra rem Архивация файлов в отдельный аархив rem for %%i in (%_in%\*.*) do "%_arcpath%\7z" a "%_out%\%%~ni.7z" "%%i" echo ---------------------------------------------------- echo Архивация подкаталогов в каталоге, в отдельный архив echo ---------------------------------------------------- echo Каталог источник (из): %_in% echo Каталог назначения (в): %_out% echo Каталог c программой 7z: %_arcpath% echo ---------------------------------------------------- TIMEOUT /T 3 for /d %%A in (%_in%\*) do "%_arcpath%\7za.exe" a -t7z -mx=9 -r -mhe -- "%_out%\%%~nxA.7z" "%%A"
Параметры передаются в строке запуска
arch.bat %1 %2 %3 %4 %5, где:
%1 - режим работы с локальными дисками (local) или с сетевыми (samba);
%2 - каталог источник (ИЗ);
%3 - каталог назначения (В);
%4 - Имя пользователя для доступа к сетевому ресурсу;
%5 - Пароль для доступа к сетевому ресурсу.
- arch.bat
@echo off SetLocal EnableExtensions chcp 866 >nul rem Версия 0.3 rem Возможность передавать в скрипт параметры rem Каталог источник и назначения cls title .: Архивация каталогов с файлами v0.3 :. rem Режим производительности ПК. Узнайте свой GUID командой powercfg /L set balance=381b4222-f694-41f0-9685-ff5bb260df2e set max=8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c rem Каталог со скриптом, каталог запуска set _cns=%cd% rem Каталог с 7z, изменить в случае необходимости set _7zpath=%cd%\7z\x64 rem Удаление пробела вначале rem set _time=%_time: =% rem Замена пробела вначале на 0 rem set _time=%_time: =0% set _date=%date:~0,2%%date:~3,2%%date:~6,4% set _time=%time:~0,2%%time:~3,2%%time:~6,2% set _date=%_date: =0% set _time=%_time: =0% set _date_dot=%date:~0,2%.%date:~3,2%.%date:~6,4% set _time_colon=%time:~0,2%:%time:~3,2%:%time:~6,2% set _date_dot=%_date_dot: =0% set _time_colon=%_time_colon: =0% rem Режм работы скрипта rem local - работа с локальными дисками rem samba - работа с сетевым ресурсом set _mode=%~1 rem Проверка режима работы if "%_mode%"=="local" ( goto lb_start ) if "%_mode%"=="samba" ( goto lb_start ) set error_txt="Не задан режим работы (local или samba)" goto lb_error :lb_start rem Каталог источник с именем диска "c:\temp" set _in=%~2 if %_in:~-1%==\ set _in=%_in:~0,-1% if "%~2" equ "" ( set error_txt="Не задан каталог источник (ИЗ)" goto lb_error ) rem Каталог получатель с именем диска "d:\temp" или сетевой ресурс. rem Сетевой ресурс и каталог должен существовать "z:\nas\exchange\1c" set _out=%~3 if %_out:~-1%==\ set _out=%_out:~0,-1% if "%~3" equ "" ( set error_txt="Не задан каталог назначение (В)" goto lb_error ) rem Извлечение буквы диска для подключения сетевого ресурса for %%A in ( "%~3" ) do ( set _dl=%%~dA set _path=%%~pA%%~nxA ) rem Включение максимальной производительности ПК set _power=%max% call :lb_power if "%_mode%" equ "local" ( call :lb_inc_data & call :lb_archiving & call :lb_power & exit /b ) rem Имя пользователя set _un=%~4 if "%~4" equ "" ( set error_txt="Укажите имя пользователя для доступа к сетевому ресурсу" goto lb_error ) rem Пароль пользователя set _up=%~5 if "%~5" equ "" ( set error_txt="Укажите пароль пользователя для доступа к сетевому ресурсу" goto lb_error ) if "%_mode%" equ "samba" ( call :lb_inc_data set _out=%_dl% net use %_dl% "\%_path%" /user:"%_un%" "%_up%" /persistent:no if errorlevel=1 ( cls set error_txt="Не удалось подключиться к сетевому ресурсу %_out%" goto lb_error ) call :lb_archiving rem Отключение сетевого ресурса echo net use /del %_dl% /y ) exit :lb_inc_data chcp 866 >nul echo ---------------------------------------------------- echo Режим работы скрипта: %_mode% echo Дата: %_date% echo Время: %_time% echo Каталог c программой 7z: %_7zpath% echo Каталог со скриптом (каталог запуска): %_cns% echo Каталог источник (из): %_in% echo Каталог назначения (в): %_out% if %_mode%==samba ( echo Имя пользователя: %_un% echo Пароль пользователя "%_up%" echo Каталог с сетевым ресурсом: %_path% echo net use %_dl% \%_path% /user:%_un% "%_up%" /persistent:no ) echo ---------------------------------------------------- rem pause exit /b :lb_archiving if not exist "%_out%\logs" ( mkdir %_out%\logs ) if not exist "%_cns%\logs" ( mkdir %_cns%\logs ) chcp 1251 >nul echo %_date_dot% - %_time_colon% >> "%_out%"\logs\archiving.txt echo %_date_dot% - %_time_colon% >> "%_cns%"\logs\archiving.txt for /d %%A in ("%_in%"\*) do ( "%_7zpath%\7za.exe" a -t7z -mx=9 -ssw -r -mhe -- "%_out%\%_date%-%_time%\%%~nxA.7z" "%%A" echo %_out%\%_date%-%_time%\%%~nxA.7z >> "%_out%\logs\archiving.txt" rem echo %_out%\%_date%-%%~nxA.7z >> "%_cns%"\logs_archiving.txt chcp 866 >nul ) rem Создание пустой строки в лог файле echo. >> "%_out%"\logs\archiving.txt echo. >> "%_cns%"\logs\archiving.txt chcp 866 >nul set _power=%balance% call :lb_power exit /b :lb_error cls color 0e echo %error_txt% chcp 1251 >nul echo %_date_dot% >> "logs\error.txt" echo %_time_colon% - %error_txt% >> "logs\error.txt" chcp 866 >nul TIMEOUT /T 3 >nul cls & color exit /b :lb_power rem Управление производительностью powercfg -setactive %_power% exit /b
Что бы запустить в «Планировщике заданий» необходимо добавить новое задание
«Действия» - Запуск программы
«Программа или сценарий» - cmd.exe
Добавить аргумент - /c start \«\» c:\script\arch.bat samba «c:\patch» «z:\patch» Vasay Pupkin или /c start «» c:\script\arch.bat local «c:\patch» «d:\patch»
Рабочая папка - c:\script