[Server] [No Comment] Пакетные файлы BAT or CMD

Шейла

Постоялец
Регистрация
12 Май 2008
Сообщения
564
Реакции
158
Предлагаю размещать пакетные файлы, которые облегчают aдминистрирование серверов.

Обсуждение запрещено!
Есть вопрос по скрипту?
Задай его отдельной теме. Или автору по ЛС.
Выкладываеш скрипт, составь для него подробное описание, в коментариях в самом скрипте.
И укажи на какой системе этот скрипт стабильно работает.

Пакетный файл для WIN 2008.
Работает на сервере редакции Standart, SP2 + все необходимые KB.

Этот пакетный файл, выполняет Архивацию системного диска в моем случае это "С", на разшаренную в сети папку.
Архивация выполняеться для того, чтоб в случае падения системы, можно было восстановиться из архива.

Скрипт проверяет кол-во сохранённых бекапов.
Если кол-во бекапов превышает установленный лимит удаляет самый старый бекап, и выполняет повторно проверку на кол-во бекапов.
Если кол-во бекапов не превышает установленный лимит выполняеться архивация системы.

В планировщике, назначена задача по расписанию, которая его запускает.

Важное замечание, спасибо lift
Для того, чтоб скрипт коректно работал с русскими символами, в частности в лог файле,
скрипт должен быть сохранен в кодировке utf or DOS.

Код:
::Включаем расширеный режим обработки команд.
::------------------------------------------
Echo Off
SetLocal EnableExtensions
SetLocal EnableDelayedExpansion
::------------------------------------------
::Сначала удаляем, затем подключаем сетевой диск.
::------------------------------------------
::У меня это диск S:
NET USE /D S: /Y
NET USE S: \\ShareServerName\ShareFolderName /USER:NameUser PasswordUser
::------------------------------------------
::Задаем все необходимые переменные.
::Переходим в корень подключенного сетевого диска.
::------------------------------------------
SET $Disk=S:
SET $TempFile=List.txt
SET $Unit=30  ::Этот параметр определяет кол-во хранящихся бекапов.
SET $BackUpLog=E:\Log_BackUp_System-%DATE:~-10%.txt
CD /D %$Disk%
::------------------------------------------
::Подсчитываем кол-во каталогов на диске и определяем самый старый.
::Задаем параметры переменным.
::------------------------------------------
:Scan_Now
DIR %$Disk% /B /A:D /O-D>%$Disk%\%$TempFile%
SET $Total=0
FOR /F %%D in (%$Disk%\%$TempFile%) do (
SET $Old_Dir=%%D
SET /A $Total+=1
)
 
::------------------------------------------
::Удаляем временный файл.
::------------------------------------------                     
DEL %$Disk%\%$TempFile%
::------------------------------------------
::Определям что делать, если каталогов много, старый удаляем.
::Если каталогов допустимое кол-во, приступаем к архивированию.
::------------------------------------------
IF /I %$Total% LEQ %$Unit% (GOTO Start_Back_Up
) ELSE (
RMDIR /S /Q %$Old_Dir%)
GOTO Scan_Now
::------------------------------------------
::Создаем каталог по текущей дате для бэкапа.
::Запускаем WBADMIN.
::------------------------------------------
:Start_Back_Up
MD %$Disk%\%DATE:~-10%
WBADMIN START BACKUP -backupTarget:\\ShareServerName\ShareFolderName\%DATE:~-10% -include:C: -allCritical -quiet >> %$BackUpLog%
::------------------------------------------
EXIT
::Всё конец!!!
 
Для win7, полная очистка временных файлов и кэша системы

Код:
@echo off
TITLE Repairing Inf Cache
rem change to drive where windows runs
%SystemDrive%
rem change to the \windows\inf folder
cd %SystemRoot%\inf

rem create random directory for backup
set FOLDERNAME=infbk-%RANDOM%
mkdir %FOLDERNAME%

rem list of files which need to be removed
set FILE1=INFPUB.DAT
set FILE2=INFSTOR.DAT
set FILE3=INFSTRNG.DAT
set FILE4=INFCACHE.*
set FILE5=SETUPAPI.*

rem take ownership of the first file
takeown /f %FILE1%
rem grant full control to 'administrators'
icacls %FILE1% /grant administrators:F /t
rem move it to the backup folder
move %FILE1% %FOLDERNAME%

rem same for the other files
takeown /f %FILE2%
icacls %FILE2% /grant administrators:F /t
move %FILE2% %FOLDERNAME%

takeown /f %FILE3%
icacls %FILE3% /grant administrators:F /t
move %FILE3% %FOLDERNAME%

takeown /f %FILE4%
icacls %FILE4% /grant administrators:F /t
move %FILE4% %FOLDERNAME%

takeown /f %FILE5%
icacls %FILE5% /grant administrators:F /t
move %FILE5% %FOLDERNAME%

echo Successfully moved all infcache related files to %FOLDERNAME%
pause
 
Два скрипта для копирования и восстановления настроек сетевых адаптеров. Проверялось на Windows XP, Windows 7 (но думаю, что будут работать и в Windows 8, 10, Server).
Первый скрипт копирует имя и все настройки всех сетевых адаптеров вне зависимости от их состояния (вкл/вкл), но только если настройки внесены вручную (если настройки выставлены по DHCP, ни настройки, ни информация и о адаптере не копируется). ВНИМАНИЕ: скрипт не копирует SSID и пароль к WiFi.
Первый скрипт для копирования (я назвал netexport.bat). После выполнения в папке со скриптом будет сформирован файл netsettings.txt с настройками. Код скрипта:
Код:
@echo off
netsh -c interface dump > netsettings.txt
exit
Второй скрипт (я назвал netimport.bat) восстанавливает настройки сети из сформированого файла netsettings.txt. Для этого нужно в папку со скриптом положить netsettings.txt. Код скрипта:
Код:
@echo off
start /wait netsh.exe -f netsettings.txt
exit

P.S. Может это и сложно назвать полноценным скриптом, но все же если на компе несколько адаптеров со своими настройками, то он поможет немного облегчить жизнь))
 
Помогите со скриптом для задания прав на подпапки для конкретного пользователя. Что-то не разобрался с CACLS. Есть Папка с кучей подпапок. Есть 2 группы пользователей full и remote. Remote может читать содержимое корневой папки, но не может входить в эти папки. Remote может войти и изменять файлы только в своей подпапке. Full имеет полный доступ во все подпапки. Пробовал играться с наследованием, что-то не получается. Подпапок много, на каждую долго права менять :(
 
ПЕРЕМЕННЫЕ ДЛЯ КОМАНДНОЙ СТРОКИ WINDOWS - могут пригодиться крафтить CMD/BAT

Тип


Описание

%ALLUSERSPROFILE%


Локальная


Возвращает размещение профиля «All Users».

%APPDATA%


Локальная


Возвращает используемое по умолчанию размещение данных приложений.

%CD%


Локальная


Возвращает путь к текущей папке.

%CMDCMDLINE%


Локальная


Возвращает строку команд, с помощью которой был запущен данный экземпляр Cmd.exe.

%CMDEXTVERSION%


Системная


Возвращает номер версии текущих расширений обработчика команд.

%COMPUTERNAME%


Системная


Возвращает имя компьютера.

%COMSPEC%


Системная


Возвращает путь к исполняемой командной оболочке.

%DATE%


Системная


Возвращает текущие данные. Использует тот же формат, что и команда date /t. Создается командой Cmd.exe.

%ERRORLEVEL%


Системная


Возвращает код ошибки последней использовавшейся команды. Значение, не равное нуля, обычно указывает на наличие ошибки.

%HOMEDRIVE%


Системная


Возвращает имя диска локальной рабочей станции, связанного с основным каталогом пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».

%HOMEPATH%


Системная


Возвращает полный путь к основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».

%HOMESHARE%


Системная


Возвращает сетевой путь к общему основному каталогу пользователя. Задается на основании расположения основного каталога. Основной каталог пользователя указывается в оснастке «Локальные пользователи и группы».

%LOGONSEVER%


Локальная


Возвращает имя контроллера домена, который проверял подлинность текущей сессии.

%NUMBER_OF_PROCESSORS%


Системная


Задает количество процессоров, установленных на компьютере.

%OS%


Системная


Возвращает имя операционной системы. При использовании Windows 2000 имя операционной системы отображается как Windows_NT.

%PATH%


Системная


Указывает путь поиска для исполняемых файлов.

%PATHEXT%


Системная


Возвращает список расширений файлов, которые рассматриваются операционной системой как исполняемые.

%PROCESSOR_ARCHITECTURE%


Системная


Возвращает архитектуру процессора. Значения: x86, IA64.

%PROCESSOR_IDENTFIER%


Системная


Возвращает описание процессора.

%PROCESSOR_LEVEL%


Системная


Возвращает номер модели процессора, установленного на компьютере.

%PROCESSOR_REVISION%


Системная


Возвращает номер модификации процессора.

%PROMPT%


Локальная


Возвращает параметры командной строки для текущего интерпретатора. Создается командой Cmd.exe.

%RANDOM%


Системная


Возвращает произвольное десятичное число от 0 до 32767. Создается командой Cmd.exe.

%SYSTEMDRIVE%


Системная


Возвращает имя диска, содержащего корневой каталог Windows XP (т. е. системный каталог).

%SYSTEMROOT%


Системная


Возвращает размещение системного каталога Windows XP.

%TEMP% и %TMP%


Системная и пользовательская


Возвращает временные папки, по умолчанию используемые приложениями, которые доступны пользователям, выполнившим вход в систему. Некоторые приложения требуют переменную TEMP, другие — переменную TMP.

%TIME%


Системная


Возвращает текущее время. Использует тот же формат, что и команда time /t. Создается командой Cmd.exe.

%USERDOMAIN%


Локальная


Возвращает имя домена, содержащего список учетных записей пользователей.

%USERNAME%


Локальная


Возвращает имя пользователя, выполнившего вход в систему.

%USERPROFILE%


Локальная


Возвращает размещение профиля для текущего пользователя.

%WINDIR%


Системная


Возвращает размещение каталога операционной системы.

в приложенном файле .CHM файл о CMD [хелпа для написания BAT/CMD]

OPEN EXPLORER.EXE
IN ADDRESS FIELD ENTER:
ftp://ftplogin:ftppassword@FTPSERVER.COM
or
ftp://ftplogin:ftppassword@IP-ADDRESS_OF_FTP [like this: ftp://kotktml:1961@93.123.145.48 ]

PASSWORD FOR ALL MY ARCHIVES

1961


^

WINDOWS COMMAND REFERENCE COLLECTION - .CHM FILE

CRAZY BSOD SCREENSAVER

.BAT or .CMD TO .EXE?
COMPILER!

SHUTDOWN COUNTDOWN ABORT COMMAND:
"shutdown -a"
SHUTDOWN WINDOWS AND SWITCH OFF THE COMPUTER
"shutdown -t 00 -s"
SHUTDOWN WINDOWS AND REBOOT THE COMPUTER
"shutdown -t 00 -r"

COMMAND LINE VARIABLES (WINXP AND SERVER 2003)

OEM INFO (WINXP) EDIT SCRIPT

@echo off

rem магические слова :)
Код:
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

rem <--- ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ --->
rem полный путь и имя файла oeminfo
set OEMFILE=%SYSTEMROOT%\system32\oeminfo.ini
rem использовать ли реестровый метод для составления списка апдейтов (1 - да; 0 - нет)
set REGMODE=0
rem маркерный файл для определения cdrom-а
set TAGFILE=WIN51
rem производитель
set MANUFACTURER=Z1MB4
rem модель
set MODEL=$TR4P0N3T!C$
rem кол-во апдейтов в одной строке (по ум. 6)
set UPMAX=6
rem по какой длине выравнивать названия обновлений (по ум. 8)
set UPNAMEL=8
rem вписывать или нет серийник в файл oeminfo (1 - да; 0 - нет)
set KEY=0
rem сделать ли видимым серийник в окне "Сведения о поддержке" (1 - да; 0 - нет)
rem невидимость серийника означает, что он не будет виден в окне "Сведения о поддержке", но в файле OEMINFO он будет в строке SerialNo=
set KEYISVISIBLE=0
rem присвоение переменной CDROM буквы cdrom-а, определенной по маркерному файлу
rem (CDROM-ом считается первый найденный дисковод с маркерным файлом)
for %%d in (c d e f g h i j k l m n o p q r s t u v w x y z) do (if exist "%%d:\%TAGFILE%" set CDROM=%%d:&& goto metka)
:metka
rem каталог с апдейтами и маска для отбора файлов в каталоге апдейтов (*.* - все; *.cat - только каталоги безопасности; KB*.* - только начинающиеся с KB и т.п.)
if defined CDROM (
   set UPDATESDIR=%CDROM%\I386\SVCPACK
   set UPDATESMASK=*.*
) else (
   rem определяем переменную CDROM как каталог на HDD
   rem (если файл oeminfo.cmd у Вас будет не в каталоге $OEM$,
   rem то измените число обрезаемых от переменной справа символов с 7 на требуемое Вам)
   set CDROM=%~dp0
   set CDROM=!CDROM:~0,-7!
   set UPDATESDIR=%SYSTEMROOT%\system32\CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
   set UPDATESMASK=KB*.*
)

rem Определение версии REG.EXE
for /F "tokens=1" %%j in ('reg 2^>nul') do if "%%j"=="REG" set REGEXE=rus

rem Обеспечение правильности отработки мультизагрузочного CD/DVD
if exist "%CDROM%\I386\winn?.sif" (
   set WINNTSIF=%CDROM%\I386\winn?.sif
) else (
   if defined REGEXE (
     for /F "tokens=3 delims=   " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j
   ) else (
     for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v SourcePath') do set SrcP=%%j
   )
   if exist "!SrcP!\winn?.sif" set WINNTSIF=!SrcP!\winn?.sif
)
rem <--- ОКОНЧАНИЕ ОБЪЯВЛЕНИЯ ПЕРЕМЕННЫХ --->

rem язык (419 - рус.), а также название, пакет обновлений, версия и сборка ОС
rem !ВАЖНО! - в кач-ве разделителя нужно указать только символ табуляции для
rem русской версии REG.EXE и только пробел для английской
if defined REGEXE (
   for /F "tokens=3 delims=   " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j
   for /F "tokens=3 delims=   " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j
   for /F "tokens=3 delims=   " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j
   for /F "tokens=3 delims=   " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j
   for /F "tokens=3 delims=   " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j
) else (
   for /F "tokens=3 delims= " %%j in ('reg query "HKCU\Control Panel\International" /v Locale') do set lang=%%j
   for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName') do set PN=%%j %%k
   for /F "tokens=3* delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDVersion') do set CSDV=%%j %%k
   for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CurrentVersion') do set CV=%%j
   for /F "tokens=3 delims= " %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v BuildLab') do set BUILD=%%j
)

rem Анализ командной строки
for /F %%j in ('echo.%* ^| find /i /c "/k"') do if %%j GTR 0 set KEY=1
for /F %%j in ('echo.%* ^| find /i /c "/v"') do if %%j GTR 0 set KEYISVISIBLE=1
for /F %%j in ('echo.%* ^| find /i /c "/r"') do if %%j GTR 0 set REGMODE=1

rem Т.к. используется символ ">", то существующий файл OEMFILE будет перезаписан;
rem т.о. нет нужды его предварительно удалять
echo [General]> "%OEMFILE%"
echo Manufacturer=%MANUFACTURER%>> "%OEMFILE%"
echo Model=%MODEL%>> "%OEMFILE%"

rem Достаем из winn?.sif серийный номер
rem Это работает независимо от вида записи ProductKey=XXXX или ProductKey = XXXX (с пробелами)
if defined WINNTSIF (
   if %KEY% == 1 (
     for /F "tokens=3 delims==] " %%j in ('find /I /N "ProductKey" "%WINNTSIF%"') do set PK=%%j
   )
)

rem вспомогательные переменные
set i=1
set l=0
set c=0
set n=0

if %REGMODE% == 1 (
   rem Все обновления, установленные в системе
   rem (отбираются по подветкам; повторяющиеся эл-ты исключаются)
   for /F "tokens=5* delims=\" %%j in ('reg query "HKLM\SOFTWARE\Microsoft\Updates" /s ^| findstr /i /v "REG_ FileList"') do (
     if %ERRORLEVEL%==0 (
       for /F "usebackq tokens=3 delims=\" %%m in ('%%j\%%k') do (
         rem !ВАЖНО! - в следующей строке после %%m должно быть не меньше UPNAMEL-1 пробелов
         rem (это нужно для выравнивания списка обновлений при наличии апдейтов с короткими названиями - WGA, IE7)
         set tmp=%%m 
         set tmp=!tmp:~0,%UPNAMEL%!
         set kb[!tmp!]=!tmp:~2,6!
       )
       rem учет обновлений .Net 2.0
       for /F "tokens=2 delims=\" %%m in ('echo %%j\%%k^| findstr /i /c:" .NET"') do (
         set tmp=%%m 
         set tmp=!tmp:~0,%UPNAMEL%!
         set kb[!tmp!]=!tmp:~2,6!
       )
     )
   )
   rem Обновления, перечисленные в ветке Uninstall (начинающиеся с KB + 6 цифр)
   for /F "tokens=7 delims=\" %%m in ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" ^| findstr /i "\<KB[0-9][0-9][0-9][0-9][0-9][0-9]"') do (
     set tmp=%%m 
     set tmp=!tmp:~0,%UPNAMEL%!
     set kb[!tmp!]=!tmp:~2,6!
   )

   rem Определяем общее количество обновлений
   for /F %%j in ('set kb[') do set /A n+=1
 
   call :suppinfo
 
   rem Сортировка и перенос списка обновлений в файл, указанный в переменной OEMFILE
   for /F "tokens=2 delims=[]" %%j in ('set kb[ ^| sort') do (set kbname=%%j&& call :myprint)
) else (
   rem Определение общего кол-ва файлов в каталоге апдейтов соотв-щих маске
   for /F %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do set /A n+=1
 
   call :suppinfo
 
   rem Список апдейтов (имена всех файлов без расширений; имена выравниваются по длине до UPNAMEL символов)
   for /F "tokens=1 delims=." %%j in ('dir /b /a:-d "%UPDATESDIR%\%UPDATESMASK%"') do (set kbname=%%j&&set kbname=!kbname!  &&set kbname=!kbname:~0,%UPNAMEL%!&& call :myprint)
)
rem Выход из этого пакетного файла.
rem Команда GOTO принимает в качестве метки перехода строку :EOF, которая вызывает
rem передачу управления в конец текущего пакетного файла. Это позволяет легко
rem выйти из пакетного файла без определения каких-либо меток. (из справки по goto)
goto :EOF

:myprint
if !c! == 0 (
   set str=!kbname!
) else (
   set str=!str!  !kbname!
)

set /A c+=1

if !c! == %UPMAX% (
   echo Line!i!=!str!>> "%OEMFILE%"
   set /A i+=1
   set /A l+=1
   set str=
   set c=0
   set /A tmp=n-l*UPMAX
) else (
   if %n% LSS %UPMAX% (
     if !c! == %n% (
       echo Line!i!=!str!>> "%OEMFILE%"
     )
   )
   if !tmp! LSS %UPMAX% (
     if !c! == !tmp! (
       echo Line!i!=!str!>> "%OEMFILE%"
     )
   )
)
goto :EOF

:suppinfo
if defined PK (
   if %KEYISVISIBLE% == 0 (
     echo [OEMSpecific]>> "%OEMFILE%"
     echo SerialNo=%PK%>> "%OEMFILE%"
     )
   )
)

echo [Support Information]>> "%OEMFILE%"
if %lang% == 00000419 (
   echo Line!i!=ОС:%PN:Microsoft=% %CSDV:Service Pack=SP% версия %CV% сборка %BUILD%>> "%OEMFILE%"
) else (
   echo Line!i!=OS:%PN:Microsoft=% %CSDV:Service Pack=SP% version %CV% build %BUILD%>> "%OEMFILE%"
)
set /A i+=1

if defined PK (
   if %KEYISVISIBLE% == 1 (
     if %lang% == 00000419 (
       echo Line!i!=Ключ продукта: %PK%>> "%OEMFILE%"
     ) else (
       echo Line!i!=Product Key: %PK%>> "%OEMFILE%"
     )
     set /A i+=1
   )
)
echo Line!i!=>> "%OEMFILE%"
set /A i+=1

rem Дата и время инсталляции ОС в формате DD.MM.YYYY (hh:mm), например 20.05.2005 (14:37)
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!
rem Вы можете добавить дополнительную инф-цию для отображения в окне "Сведения о поддержке"
rem в рус. и/или анг. версии (для вставки пустой строки исп-те команду echo Line!i!=>> "%OEMFILE%"
rem ; и не забывайте ставить set /A i+=1 перед каждой строкой)
rem !!!!!!!!!!!!!!!!!!!!!!!!!!!
for /F %%t in ('time/T') do set T=%%t
if %lang% == 00000419 (
   echo Line!i!=Дата и время установки ^(обновления^:( %date% ^(%T%^)>> "%OEMFILE%"
   set /A i+=1
   echo Line!i!=>> "%OEMFILE%"
   rem Пример добавления своих строк
   rem set /A i+=1
   rem echo Line!i!=Ваша информация>> "%OEMFILE%"
   set /A i+=1
   echo Line!i!=Установленные компоненты и обновления ^(%n%^:(>> "%OEMFILE%"
) else (
   echo Line!i!=Installation ^(updation^) date and time: %date% ^(%T%^)>> "%OEMFILE%"
   set /A i+=1
   echo Line!i!=>> "%OEMFILE%"
   rem Example for adding custom information
   rem set /A i+=1
   rem echo Line!i!=Your information>> "%OEMFILE%"
   set /A i+=1
   echo Line!i!=Installed Components and Updates ^(%n%^:(>> "%OEMFILE%"
)
set /A i+=1
echo Line!i!=>> "%OEMFILE%"
set /A i+=1
goto :EOF

MS-DOS WITH NTFS AND TCP/IP
QEMM - 512MB CAPABLE
BOOTABLE CD
.ISO FORMAT
DOWNLOAD:
Для просмотра ссылки Войди или Зарегистрируйся
 

Вложения

  • CMDVAR.TXT
    7,7 KB · Просмотры: 1
  • CMD [WHAT IZ WHAT].rar
    454,5 KB · Просмотры: 3
  • WinCmdRef.rar
    1,9 MB · Просмотры: 0
  • SYSINTERNALS_BLUESCREEN.rar
    59,5 KB · Просмотры: 0
  • QUICK BATCH FILE COMPILER.rar
    2,3 MB · Просмотры: 0
  • CMDVAR.TXT
    7,7 KB · Просмотры: 0
  • OEMINFO.rar
    4,1 KB · Просмотры: 0
Последнее редактирование модератором:
Оставлю здесь. Может кому пригодиться. Для меня очень нужный скрипт. Я например с его помощью перекидываю бекапы баз 1С на ФТП-сервер. Работает на Windows Server 2008/2008R2, Windows Server 2016.
Нужна маленькая прога для соединения с фтп-сервером. Для просмотра ссылки Войди или Зарегистрируйся
Установка WinSCP проста.Описывать не буду.
1.Батник.
Код:
set datetimef=%date:~-4%_%date:~3,2%_%date:~0,2%
set back_filename=bu_work_backup_%datetimef%_*.bak
"C:\Program Files (x86)\WinSCP\winscp.com" /ini=nul /script="C:\Program Files (x86)\WinSCP\buback.txt"
В первой строке выбирается самый последний файл по дате и времени, потому как в моём случае имя бекапа файла состоит из названия бекапа и добавляется дата и время. Это уже Скуль так делает бекап.
Потом указание название файла вместе с расширением. В примере - это база bu_work_backup.bak.
В третьей строке путь к файлу скрипта и к текстовому файлу, в котором указаны данные для подключения к ФТП-серверу.
2.Текстовик.
Код:
option batch on
option confirm off
# open ftp connection
open ftp://логин:пароль@адрес сервера
put G:\Backup\bu_work\%back_filename% /backup/bu_work/
# "/" Backup
exit
Сначала указаны данные для подключения к фтп-серверу.Логин, пароль.
Потом в строке указаны пути где лежит файл файл.
 
Cкрипт инкрементного резервного копирования общей папки.

Работает на win2k8 win2k12 win2k16
В системе требуется установленный 7zip
В планировщике ставим ежедневный запуск full.bat
Если полный архив отсутствует - скрипт создаст полный б'кап
Если уже есть полный архив - будет создан инкремент с отбором по атрибуту "архивный". Если сегодняшний инкремент уже есть (например ПК днем перезагрузили), то скрипт ничего не делает.
В планировщике ставим запуск dellfull.bat например раз в месяц. Этот скрипт сотрет прежний полный бэкап, что послужит сигналом к полному очищению папки хранения бэкапов и запуску создания свежего полного архива

full.bat
Код:
rem ************ блок настроек скрипта************
rem установка параметров

rem что копируем
set source=D:\Documents

rem временная папка, используется для создания инкрементов, сама очищается
set zipertmp=E:\zipertmp

rem куда копируем
set destination=E:\docs_backup

rem указываем путь до архиватора 7-zip
set ziper="C:\Program Files\7-Zip\7z.exe"


rem ***********************************************
rem определяем дату и записываем в переменную
for /F "tokens=1-3 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%1.%%2.%%3
rem ***********************************************


rem **********блок создания инкрементов ***********
rem если есть полный архив, то делаем инкремент и выходим. Если полный архив отсутствует - переходим в раздел создания полного архива
if not exist %destination%\full_**********.zip goto createfull

rem Если уже есть сегодняшний инкремент, то ничего делать не надо
if exist %destination%\incr_%mydate%.zip goto gdby

rem делаем инкремент
rd %zipertmp% /S /Q
mkdir %zipertmp%
robocopy %source% %zipertmp% /S /Z /M
%ziper% a %destination%\incr_%mydate%.zip %zipertmp%\* -mx1 -pfj38drnvhfy462390g7
rd %zipertmp% /S /Q

:gdby
exit
rem *************************************************


rem ************ блок создания полного архива ************
:createfull
rem очищаяем папку назначения
rd %destination% /S /Q
mkdir %destination%

rem Делаем полный архив 7зипом
%ziper% a %destination%\full_%mydate%.zip %source%\* -mx1 -pfj38drnvhfy462390g7

rem Снимаем атрибут "архивный" со всех файлов в целевом каталоге
cd /d %source%
attrib -A *.* /S /D
exit
rem ******************************************************

dellfull.bat
Код:
set destination=E:\docs_backup

del %destination%\full_**********.zip /q /a

Автоматический бэкап виртуальных машин Hyper-V 2012R2 и 2016R2

Резервное копирование на лету без остановки гостевых ОС. Скрипт сначала экспортирует ВМ, потом зажимает их архиватором 7zip, и на последок чистит за собой хвосты + следит за количеством одновременно хранимых архивов. Внимательно следите за переменными, чтобы они указывали в реально существующие каталоги + обязательно наличие 7zip установленного в систему с параметрами по умолчанию.

backup.bat
Код:
rem --- start script ---
rem Блок настроек скрипта
rem назначаем глубину кол-ва архивов, например хранить 2 последних
set depth=2

rem Назначим уровень сжатия [0 | 1 | 3 | 5 | 7 | 9 ], по умолчанию 7zip использует 5
set cmprslvl=3

rem выбираем из всего многообразия нужную нам гостевую машину, по имени как она значится в Hyper-V оснастке
set vmname=km-bts01

rem Указываем промежуточный каталог куда ВМ будет экспортирована перед архивированием
set temp=e:\temp

rem Указываем куда складывать бэкапы
set vault=e:\backup\hyper-v

rem ************************************************
rem Все, дальше ничего не трогаем
set /a depth=%depth%-1
rem define date time variables for building the folder name
for /F "tokens=1-3 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%1.%%2.%%3
for /F "tokens=1-3 usebackq delims=: " %%1 in (`time /t`) do set mytime=%%1-%%2
set timestamp=%mydate%_%mytime%
rem В файлик складываем список содержимого %vault%, отсортированного по дате, самые новые вверху
dir %vault% /O:-D /B>%temp%\dir%vmname%.txt

rem Отберем только интересующие нас файлы по шаблону имени.
rem Потом просто пропускаем %depth% кол-во строк, остальное удалим.
for /f "usebackq skip=%depth%" %%i in (`findstr "%vmname%" %temp%\dir%vmname%.txt`) do del %vault%\%%i /q /f

rem Запускаем резервное копирование
echo y|powershell.exe Set-ExecutionPolicy Unrestricted
powershell.exe Export-VM -Name %vmname% -Path "%temp%\%vmname%_%timestamp%"
echo y|powershell.exe Set-ExecutionPolicy Restricted

:: Архивируем и складываем куда следует, проверяй правильность пути до архиватора
"c:\Program Files\7-Zip\7z.exe" a "%vault%\%vmname%_%timestamp%.zip" "%temp%\%vmname%_%timestamp%\*" -mx%cmprslvl%

:: Чистим за собой
dir %temp% /O:-D /B>%temp%\dir%vmname%.txt
for /f "usebackq skip=%depth%" %%i in (`findstr "%vmname%" %temp%\dir%vmname%.txt`) do rmdir %temp%\%%i /q /s
::rmdir "%temp%\%vmname%_%timestamp%"  /q /s

rem --- end script ---
 
Последнее редактирование модератором:
1. Скрипт на BAT инкрементного копирования файлов.

В системе требуется установленный 7zip
В планировщике ставим ежедневный запуск full.bat
Если полный архив отсутсвует - скрипт создаст полный бэкап
Если уже есть полный архив - будет создан инкремент с отбором по атрибуту "архивный". Если сегодняшний инкремент уже есть (например ПК днем перезагрузили), то скрипт ничего не делает.
В планировщике ставим запуск dellfull.bat например раз в месяц. Этот скрипт сотрет прежний полный бэкап, что послужит сигналом к полному очищению папки хранения бэкапов и запуску создания свежего полного архива

full.bat
Код:
rem ************ блок настроек скрипта************
rem установка параметров

rem что копируем
set source=D:\Documents

rem временная папка, используется для создания инкрементов, сама очищается
set zipertmp=E:\zipertmp

rem куда копируем
set destination=E:\docs_backup

rem указываем путь до архиватора 7-zip
set ziper="C:\Program Files\7-Zip\7z.exe"

rem ***********************************************
rem определяем дату и записываем в переменную
for /F "tokens=1-3 usebackq delims=. " %%1 in (`date /t`) do set mydate=%%1.%%2.%%3
rem ***********************************************


rem **********блок создания инкрементов ***********
rem если есть полный архив, то делаем инкремент и выходим. Если полный архив отсутствует - переходим в раздел создания полного архива
if not exist %destination%\full_**********.zip goto createfull

rem Если уже есть сегодняшний инкремент, то ничего делать не надо
if exist %destination%\incr_%mydate%.zip goto gdby

rem делаем инкремент
rd %zipertmp% /S /Q
mkdir %zipertmp%
robocopy %source% %zipertmp% /S /Z /M
%ziper% a %destination%\incr_%mydate%.zip %zipertmp%\* -mx5
rd %zipertmp% /S /Q

:gdby
exit
rem *************************************************


rem ************ блок создания полного архива ************
:createfull
rem очищаяем папку назначения
rd %destination% /S /Q
mkdir %destination%

rem Делаем полный архив 7зипом
%ziper% a %destination%\full_%mydate%.zip %source%\* -mx5

rem Снимаем атрибут "архивный" со всех файлов в целевом каталоге
cd /d %source%
attrib -A *.* /S /D
exit
rem ******************************************************

dellfull.bat
Код:
set destination=E:\docs_backup

del %destination%\full_**********.zip /q /a
 
Последнее редактирование:
Чистка всех журналов

Код:
for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
 
Подскажите, тут и заказы на скрипты можно писать? Или только выкладывать?
//В шапке есть только "Нельзя обсуждать".
 
Назад
Сверху