@echo off Title SCRIPT BACKUP HD EXTERNO.. :start pushd "%~dp0" SET ID= SET IDS= ::taskkill /f /fi "USERNAME eq %username%" /fi "IMAGENAME ne mstsc.exe" /fi "IMAGENAME ne explorer.exe" /fi "IMAGENAME ne %~nx0" /fi "IMAGENAME ne cmd.exe" /fi "IMAGENAME ne conhost.exe" /fi "IMAGENAME ne notepad.exe" /fi "IMAGENAME ne robocopy.exe" &cls >nul cls ::Elevando privilegio para executar o Robocopy if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b) :USUARIO setlocal title SELECIONE A PASTA PARA O BACKUP cls :: Interacao do usuario para selecionar a pasta de backup set "psCommand="(new-object -COM 'Shell.Application')^.BrowseForFolder(0,'ESCOLHA A PASTA DO BACKUP:','^&H200','%systemdrive%\Users').Self.Path"" for /f "usebackq delims=" %%I in (`powershell %psCommand%`) do set "ID=%%I" cls :: Checa Se o valor informado e nulo caso seja solicita novamente que seja informado caso nao prossegue for %%d in ("%ID%") do set "IDS=%%~nxd" IF "%ID%"=="" (goto usuario) else (goto CONTINUE) :CONTINUE :: Adicionando : na variavel hd ::set hd=%letra%: :: Checa Se existe a pasta caso nao exista retorna para solicitando o nome de usuario correto if not exist "%ID%" Echo Nao existe %ID% informe o caminho correto & pause & goto usuario title Fazendo Backup de [%IDS%] IF "%NEO%"=="1" (goto BACKUP) :: Questiona o usuario se ele quer apagar bkps antigos ou nao e valIDa somente com S/N IF EXIST "%~d0\BACKUP\OK\*" choice /c SN /m "Deseja Deletar bkps antigos da pasta %~d0\BACKUP\OK do hd externo?" IF %ERRORLEVEL% EQU 1 (if exist "%~d0\BACKUP\OK\*" forfiles /P "%~d0\BACKUP\OK" /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file" & goto BACKUP) IF %ERRORLEVEL% EQU 2 (IF NOT EXIST "%~d0\BACKUP\OK" md "%~d0\BACKUP\OK" & goto BACKUP) :BACKUP cls Echo Backup Sendo Efetuado Aguarde... ::------------------------------------------------------------------------------- ::Backup usando Robocopy ::Opcoes Robocopy ::robocopy '%letra%\Users\%ID%' '%~d0\BACKUP\OK\%ID%' /E /ZB /DCOPY:T /COPYALL /FFT /DST /XA:SH /XJD /XJF /MIR /R:1 /W:1 /XF '*.tmp' /XD 'Links' 'AppData' 'Contacts' 'Searches' /TEE /FP /NJH /NP :: Use robocopy /? para ver todas as opçoes ::------------------------------------------------------------------------------- ::/COPYALL COPIAR TODAS as informações do arquivo(equivalente a /COPY:DATSOU). ::/DCOPY:T = Copiar Arquivo o que COPIAR para diretórios (padrão é/DCOPY:DA).(marcas : D=Dados, A=Atributos, T=Carimbos de Data/Hora). ::/DST :: compensar para diferenças de uma hora de horário de verão. ::/FFT :: assumir horas de arquivo FAT (granularIDade de 2 segundos). ::/FP :: incluir nome de caminho completo de arquivos na saída. ::/MIR :: espelhar uma árvore de diretórios (equivalente a /E mais /PURGE) ::/NJH :: sem descrição de trabalho. ::/NP :: sem progresso - não exibir percentual copiado. ::/R:n :: número de Repetições em cópias com falhas: o padrão é 1 milhao. ::/TEE :: saída para janela de console, assim como arquivo de log. ::/V :: produzir saída detalhada, mostrando arquivos ignorados. ::/W:n :: tempo de espera entre as repetições: o padrão é 30 segundos. ::/XA:SH ::XA:[RASHCNETO] :: ignorar arquivos com qualquer um dos conjuntos determinados de Atributos ::/XD dirs [dirs]... :: ignorar Diretórios que correspondem a determinados nomes/caminhos. ::/XJD :: eXcluir pontos de Juncao e links simbolicos para Diretórios. ::/XJF :: eXcluir links simbólicos para Arquivos. ::/ZB usar o modo reiniciável; se o acesso for negado,use o modo de Backup. ::E copiar subdiretórios, incluindo os vazios. robocopy %ID% "%~d0\BACKUP\OK\%IDS%" /E /ZB /DCOPY:T /COPYALL /FFT /DST /XA:SH /XJD /XJF /MIR /R:1 /W:1 /XF "*.tmp" /XD "Links" "AppData" "Contacts" "Searches" /NP /TEE /FP /NJH /XX /LOG+:"%~d0\backup\OK\copia.log" if exist "%ID%\AppData\Roaming\Microsoft\Sticky Notes\*.snt" xcopy /E /H /D /V /Y /I "%ID%\AppData\Roaming\Microsoft\Sticky Notes\*.snt" "%~d0\BACKUP\OK\%IDS%\AppData\Roaming\Microsoft\Sticky Notes\*.snt"> nul if exist "%ID%\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\plum.sqlite" xcopy /E /H /D /V /Y /I "%ID%\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\*.*" "%~d0\BACKUP\OK\%IDS%\AppData\Local\Packages\Microsoft.MicrosoftStickyNotes_8wekyb3d8bbwe\LocalState\*.*"> nul if exist "%~d0\BACKUP\OK\%IDS%\AppData" attrib +h +s "%~d0\BACKUP\OK\%IDS%\AppData" > nul cls choice /c SN /m "Deseja Realizar um novo Backup?" IF %ERRORLEVEL% EQU 1 (cls & SET "NEO=1" & GOTO START) IF %ERRORLEVEL% EQU 2 (Echo. & Echo Backup Concluido... & echo. &echo #Backup %~d0\BACKUP\OK\%IDS% &echo #Log %~d0\backup\copia.log & pause & goto END) :END explorer "%~d0\backup\OK" & ENDLOCAL & EXIT