Script em lote do Windows para copiar arquivos recursivamente

https://gist.github.com/Penderis/950c914afe0e5b6cc4ee



@echo off

CLS


setlocal EnableDelayedExpansion


REM Altera o caminho da raiz para relativo à pasta bat atual


pushd "% ~ dp0"


REM encontra arquivos no arquivo .txt fornecido e os copia para o diretório de destino

REM CHECK FOR ADMIN RIGHTS


COPY / b / y NUL% WINDIR% 06CF2EB6-94E6-4a60-91D8-AB945AE8CF38> NUL 2> & 1


IF ERRORLEVEL 1 GOTO: NONADMIN


DEL % WINDIR% 06CF2EB6-94E6-4a60-91D8-AB945AE8CF38> NUL 2> & 1



: ADMIN

REM GOT ADMIN RIGHTS


COLOR 1F


ECHO Olá,% USERNAME%!


ECHO Por favor aguarde ...



set / p DEST DIR = "Copiar arquivos para:"% =%

set / p SEARCH
DIR = "Copiar arquivos de:"% =%

@echo .

@echo Verifique se o nome da pasta está correto.

@echo Copiar arquivos para:% DEST DIR%

@echo Copiar arquivos de:% SEARCH
DIR%

set / p CORRECT
FOLDERS = "Estão corretos? (verifique a ortografia) s / n:"

if '% CORRECT
FOLDERS%' == 'y' GOTO: SIM RESPONDA

se '% CORRECT
FOLDERS%' == 'n' GOTO: NO_ANSWER

COLOR 2F


ECHO.


PAUSE


GOTO: EOF



: NONADMIN

REM NO ADMIN RIGHTS


COLOR 4F


ECHO.


ECO POR FAVOR, EXECUTE COMO ADMINISTRADOR


ECO.


pausa


GOTO: EOF



: SIM RESPOSTA

@echo .

@echo você respondeu sim

@echo .

se existir% DEST
DIR% GOTO: LEIA DADOS,

se não existir% DEST
DIR% md% DEST DIR% & GOTO: LEIA DADOS

PAUSA



: SEM RESPOSTA

@echo .

@echo você respondeu não

set / p TRY
AGAIN = "Tentar novamente? y / n:"

if '% TRY
AGAIN%' == 'y' GOTO: SIM RESPOSTA

se '% TRY
AGAIN%' == 'n' GOTO: SAIR DA

PAUSA
DO PROGRAMA



: EXIT_PROGRAM

@echo .

@echo "Desculpe, porra"

PAUSE


GOTO: EOF



: LEIA OS DADOS

@echo .

set / p GET
FILENAMES = "Qual é o nome do arquivo de texto em que seus nomes de arquivo estão armazenados?"% =%

if exist% GET
FILENAMES% .txt @echo Iremos agora ler e copiar os arquivos para você, tome um café, talvez demore um pouco & GOTO: ESCREVER DADOS

se não existir% GET
FILENAMES% .txt @echo Nome do arquivo não corresponde, por favor digite apenas o nome sem extensão .txt & GOTO: READ DATA

PAUSE



: ESCREVER DADOS

@echo .

@echo lendo o nome do arquivo ...

para / f "usebackq delims =" %% a in ("% GET
FILENAMES% .txt") faça (

para / r "% SEARCH
DIR%" %% b in ("%% a * ") do (

@echo Cópia iniciada ...


cópia" %% b ""% DEST
DIR% %% ~ nxb "

)


)


@echo Cópia concluída, revise as ações. Lekker Man.

PAUSAR


</pre>