Robocopy definitivamente não fará o que você está procurando por conta própria.
Inicialmente, pensei em dizer a você para escrever um script que gera dinamicamente a lista de exclusões, mas é provável que você encontre as limitações de tamanho da linha de comando.
Com isso em mente, acho que seria melhor escrever um script para criar um arquivo "job" de Robocopy. Aqui está um script para criar um trabalho simples dinamicamente com base no conteúdo de C:\Users
:
@echo off
set DEST=\SERVER\SHARE
set SRC=C:\Users
set RCJ=%RANDOM%.RCJ
echo /DD:%DEST%>%RCJ%
echo /SD:%SRC%>>%RCJ%
echo /IF>>%RCJ%
echo *>>%RCJ%
echo /S :: copy Subdirectories, but not empty ones.>>%RCJ%
echo /E :: copy subdirectories, including Empty ones.>>%RCJ%
echo /COPY:DAT :: what to COPY for files (default is /COPY:DAT).>>%RCJ%
echo /PURGE :: delete dest files/dirs that no longer exist in source.>>%RCJ%
echo /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).>>%RCJ%
echo /R:1000000 :: number of Retries on failed copies: default 1 million.>>%RCJ%
echo /W:30 :: Wait time between retries: default is 30 seconds.>>%RCJ%
echo /XD :: eXclude Directories matching these names>>%RCJ%
for /d %%i in (%SRC%\*) do call :_de "%%i">>%RCJ%
robocopy /job:%RCJ%
del %RCJ%
goto :EOF
:_de
echo %~1\AppData\Local\Google
echo %~1\AppData\Local\Microsoft\Windows
echo %~1\AppData\Local\NVIDIA
echo %~1\AppData\Local\Temp
echo %~1\AppData\LocalLow\Google
Eu fiquei muito arrogante nesse script, indo em frente e executando robocopy
e excluindo o arquivo de trabalho. Eu comentaria essas linhas enquanto você estivesse testando, e provavelmente adicionaria alguma verificação do errorlevel
após a conclusão de robocopy
.