|
@echo off |
|
@echo off |
|
|
|
setlocal ENABLEDELAYEDEXPANSION |
|
|
|
cd /d "%~dp0" |
|
|
|
set target= |
|
set Operate= |
|
set cuDateNum=%date% |
|
set logFolderName=%~n0_Log |
|
set commandResault= |
|
set /a keepTopTotal=3 |
|
|
|
set "cuDateNum=!cuDateNum:/=-!" |
|
set "cuDateNum=!cuDateNum::=-!" |
|
set "cuDateNum=!cuDateNum:.=-!" |
|
set "cuDateNum=!cuDateNum: =-!" |
|
|
|
echo Set objArgs = WScript.Arguments > "%~dpn0.vbs" |
|
echo Set FS = CreateObject("Scripting.FileSystemObject") >> "%~dpn0.vbs" |
|
echo Function LPad (str, pad, length) >> "%~dpn0.vbs" |
|
echo LPad = String(length - Len(str), pad) ^& str >> "%~dpn0.vbs" |
|
echo End Function >> "%~dpn0.vbs" |
|
echo InputFolder = FS.GetAbsolutePathName(objArgs(0)) >> "%~dpn0.vbs" |
|
echo ZipFile = InputFolder ^& "_" ^& Year(Date) ^& LPad(Month(Date), "0", 2) ^& LPad(Day(Date), "0", 2) ^& LPad(Hour(Time), "0", 2) ^& LPad(Minute(Time), "0", 2) ^& LPad(Second(Time), "0", 2) ^& ".zip" >> "%~dpn0.vbs" |
|
echo CreateObject("Scripting.FileSystemObject").CreateTextFile(ZipFile, True).Write "PK" ^& Chr(5) ^& Chr(6) ^& String(18, vbNullChar) >> "%~dpn0.vbs" |
|
echo Set objShell = CreateObject("Shell.Application") >> "%~dpn0.vbs" |
|
echo objShell.NameSpace(ZipFile).CopyHere(InputFolder) >> "%~dpn0.vbs" |
|
echo wScript.Sleep 2000 >> "%~dpn0.vbs" |
|
|
|
if not exist "!logFolderName!" md "!logFolderName!" > nul 2>&1 |
|
|
|
if not exist "!logFolderName!\!logFolderName!-!cuDateNum!.csv" echo Date,Time,Operate,Target,Create Time> "!logFolderName!\!logFolderName!-!cuDateNum!.csv" 2>&1 |
|
|
|
schtasks /Query /V /FO List /TN "%~n0" >nul 2>&1 |
|
if not "!ERRORLEVEL!"=="0" call :addToTask |
|
|
|
for /f "delims=" %%a in ('dir /A:D /B') do ( |
|
|
|
set Operate=Done |
|
|
|
set target=%%a |
|
|
|
if "!target!"=="!logFolderName!" ( |
|
|
|
call :excludingTarget |
|
|
|
) else if "!target!"=="Saved" ( |
|
|
|
call :excludingTarget |
|
|
|
) else ( |
|
|
|
tasklist /FI "IMAGENAME eq Dungeons-Win64-Shipping.exe" | find "Dungeons-Win64-Shipping" > nul && ( |
|
|
|
if "!Operate!"=="Done" ( |
|
call :doingTarget "!target!" |
|
) else ( |
|
|
|
echo !date!,!time::=-!,!Operate!,!target! |
|
echo !date!,!time::=-!,!Operate!,!target!>> "!logFolderName!\!logFolderName!-!cuDateNum!.csv" 2>&1 |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
for /f "delims=" %%a in ('dir /A:-D /O:-D /B *.zip') do ( |
|
|
|
set Operate=Done |
|
|
|
set target=%%a |
|
|
|
echo "!target!" | find ".zip" > nul && ( |
|
|
|
if /I !keepTopTotal! GEQ 1 ( |
|
|
|
call :excludingTarget |
|
|
|
set /a keepTopTotal-=1 |
|
|
|
) else ( |
|
|
|
call :deleteTarget "!target!" |
|
|
|
) |
|
|
|
) |
|
|
|
) |
|
|
|
goto :batchexit |
|
|
|
:excludingTarget |
|
|
|
set Operate=Exclude |
|
|
|
goto :eof |
|
|
|
:doingTarget |
|
|
|
set commandResault=Complete |
|
for /f "delims=" %%a in ('"""%SystemRoot%\System32\wscript.exe"" ""%~dpn0.vbs"" %1" 2^>^&1') do if not "!ERRORLEVEL!"=="0" set commandResault=%%a |
|
echo !date!,!time::=-!,BackUp,Resault^: %1 ^-^> !commandResault:~0,-1!>> "!logFolderName!\!logFolderName!-!cuDateNum!.csv" |
|
|
|
goto :eof |
|
|
|
:deleteTarget |
|
|
|
set commandResault=Complete |
|
for /f "delims=" %%a in ('del /F %1 2^>^&1') do if not "!ERRORLEVEL!"=="0" set commandResault=%%a |
|
echo !date!,!time::=-!,Delete,Resault^: %1 ^-^> !commandResault:~0,-1!>> "!logFolderName!\!logFolderName!-!cuDateNum!.csv" |
|
|
|
goto :eof |
|
|
|
:addToTask |
|
|
|
net start "Task Scheduler" >nul 2>&1 |
|
net start "Schedule" >nul 2>&1 |
|
|
|
set commandResault= |
|
for /f "delims=" %%a in ('schtasks /Create /F /RU "NT AUTHORITY\SYSTEM" /TN "%~n0" /TR "%~dpnx0" /SC MINUTE 2^>^&1') do set commandResault=%%a |
|
echo !date!,!time::=-!,Create schtasks,Resault: !commandResault:~0,-1! ,"!date! !time!">> "!logFolderName!\!logFolderName!-!cuDateNum!.csv" |
|
|
|
goto :eof |
|
|
|
endlocal |
|
|
|
:batchexit |