-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBackup_Filestream.bat
110 lines (101 loc) · 2.57 KB
/
Backup_Filestream.bat
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
@ECHO OFF
:: This Batch File Backs-up Filestreams defined in \config.json
TITLE Filestream Backup
:: Set Variables
SETLOCAL ENABLEDELAYEDEXPANSION
SET DIR=%~dp0%
SET CONFIGFILE=config.txt
SET CONFIGPATH=%DIR%%CONFIGFILE%
SET "SEP="
SET CHAR=-
SET "PADDING="
SET "SPACE= "
:: Output Header
FOR /L %%I IN (1,1,78) DO (
SET SEP=!SEP!!CHAR!
)
FOR /L %%I IN (1,1,29) DO (
SET PADDING=!PADDING!!SPACE!
)
ECHO +!SEP!+
ECHO !PADDING!Filestream Backup !PADDING!
ECHO +!SEP!+
ECHO.
ECHO DATETIME: %date% %time%
ECHO.
ECHO.
:: Check if \logs Directory Exists
IF NOT EXIST "!DIR!logs\" (
MD "!DIR!logs"
)
:: Copy Filestream
FOR /F "delims=, skip=1 tokens=1,2,3,4 usebackq" %%W IN ("%CONFIGPATH%") DO (
:: Set Variables
SET NAME=%%W
SET NAME=!NAME:"=!
SET SRC=%%X
SET SRC=!SRC:"=!
SET SRCLAST=!SRC:~-1!
SET DST=%%Y
SET DST=!DST:"=!
SET DSTLAST=!DST:~-1!
SET OPTION=%%Z
SET OPTION=!OPTION:"=!
SET "SEP="
CALL :STRLEN NAME NUM
SET /A NUM=NUM+9
:: Correct SRC and DST Quotations
IF "!SRCLAST!"=="\" (
SET SRC="!SRC! "
) ELSE (
IF "!SRCLAST!"=="/" (
SET SRC="!SRC! "
) ELSE (
IF NOT "!SRC!"=="!SRC: =!" (
SET SRC="!SRC!"
)
)
)
IF "!DSTLAST!"=="\" (
SET DST="!DST! "
) ELSE (
IF "!DSTLAST!"=="/" (
SET DST="!DST! "
) ELSE (
IF NOT "!DST!"=="!DST: =!" (
SET DST="!DST!"
)
)
)
:: Backup Filestream
FOR /L %%I IN (1,1,!NUM!) DO (
SET SEP=!SEP!!CHAR!
)
ECHO Backing up !NAME!
ECHO +!SEP!+
ECHO.
ECHO SRC : !SRC!
ECHO DST : !DST!
ECHO OPTION: !OPTION!
ECHO LOG : ~\logs\!NAME! Backup.log
ECHO.
ROBOCOPY !SRC! !DST! * !OPTION! /LOG:"!DIR!logs\!NAME! Backup.log"
ECHO.
ECHO NOTE: !NAME! backed up successfully.
ECHO.
)
GOTO:EOF
:: STRLEN Function Courtesy of https://ss64.com/nt/syntax-strlen.html
:: STRVAR: Name of the variable containing the string to count.
:: RTNVAR: Name of the variable to contain the length of STRVAR.
:STRLEN STRVAR [RTNVAR]
SETLOCAL ENABLEDELAYEDEXPANSION
SET "s=#!%~1!"
SET "LEN=0"
FOR %%N IN (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) DO (
IF "!s:~%%N,1!" NEQ "" (
SET /a "LEN+=%%N"
SET "s=!s:~%%N!"
)
)
ENDLOCAL & IF "%~2" NEQ "" (SET %~2=%LEN%) ELSE ECHO %LEN%