Это старая версия документа!


Архивирование каталога

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 ----------------------------------------------------
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
  • Последнее изменение: 06:11:2025 14:52