Загрузка данных



@echo off
setlocal EnableExtensions
chcp 65001 >nul

REM ==================================================
REM ROBOCOPY - ПЕРЕНОС ДАННЫХ СО СТАРОГО ПК НА НОВЫЙ
REM ==================================================

REM ==================================================
REM 1. IP-АДРЕС СТАРОГО КОМПЬЮТЕРА
REM ==================================================
REM Укажи IP компьютера, С КОТОРОГО копируем.
REM Пример: 192.168.50.1
REM На каждом новом ПК укажи IP своего старого ПК.

set "OLD_PC=192.168.50.1"


REM ==================================================
REM 2. ПАПКА ДЛЯ ЛОГОВ
REM ==================================================
REM Здесь сохраняются отчеты о копировании.
REM Папка будет создана автоматически.

set "LOGDIR=C:\RoboLogs"

if not exist "%LOGDIR%" mkdir "%LOGDIR%"


REM ==================================================
REM 3. НАСТРОЙКА СКОРОСТИ И ПОВТОРОВ
REM ==================================================
REM MT:16 - 16 потоков (SSD/NVMe, сеть 1 Гбит)
REM R:0   - не повторять копирование при ошибке
REM W:0   - не ждать между попытками
REM J     - оптимизация для больших файлов
REM E     - копировать все подпапки, включая пустые
REM XJ    - не переходить по junction-ссылкам
REM
REM Не используй /MIR: он может удалять файлы!

set "THREADS=16"


REM ==================================================
REM 4. СПИСОК ПАПОК ДЛЯ ПЕРЕНОСА
REM ==================================================
REM
REM Формат каждой строки:
REM call :COPY "ИСТОЧНИК" "НАЗНАЧЕНИЕ" "ИМЯ_ЛОГА"
REM
REM ИСТОЧНИК:
REM C$\Work означает C:\Work на старом ПК.
REM D$\Projects означает D:\Projects на старом ПК.
REM
REM НАЗНАЧЕНИЕ:
REM Локальный путь на НОВОМ компьютере.
REM
REM ИМЯ_ЛОГА:
REM Уникальное имя на латинице, без пробелов.
REM
REM УДАЛИ или ЗАМЕНИ примеры своими путями.
REM Чтобы отключить строку, добавь REM в начале.
REM ==================================================

call :COPY "C$\Work" "D:\Work" "Work"

call :COPY "D$\Projects" "D:\Projects" "Projects"

call :COPY "D$\Archive" "E:\Archive" "Archive"

REM call :COPY "C$\Temp" "D:\Temp" "Temp"


REM ==================================================
REM 5. ЗАВЕРШЕНИЕ
REM ==================================================

echo.
echo ================================================
echo ВСЕ ЗАДАНИЯ ОБРАБОТАНЫ
echo Логи: %LOGDIR%
echo ================================================
pause
exit /b


REM ==================================================
REM 6. ФУНКЦИЯ КОПИРОВАНИЯ
REM ==================================================
REM НИЖЕ НИЧЕГО МЕНЯТЬ НЕ НУЖНО
REM ==================================================

:COPY

set "SOURCE=\\%OLD_PC%\%~1"
set "DEST=%~2"
set "NAME=%~3"

echo.
echo ================================================
echo КОПИРОВАНИЕ: %NAME%
echo ИСТОЧНИК: %SOURCE%
echo НАЗНАЧЕНИЕ: %DEST%
echo ================================================

REM Проверяем доступность исходной папки
if not exist "%SOURCE%\" (
    echo ОШИБКА: Исходная папка недоступна!
    echo %SOURCE%
    >>"%LOGDIR%\Errors.log" echo FAILED: %SOURCE%
    exit /b 0
)

REM Запускаем копирование
robocopy "%SOURCE%" "%DEST%" ^
 /E ^
 /J ^
 /MT:%THREADS% ^
 /R:0 ^
 /W:0 ^
 /COPY:DAT ^
 /DCOPY:DAT ^
 /XJ ^
 /NP ^
 /TEE ^
 /LOG+:"%LOGDIR%\%NAME%.log"

REM Проверяем код завершения Robocopy
if errorlevel 8 (
    echo ОШИБКА: Некоторые файлы не скопированы!
    >>"%LOGDIR%\Errors.log" echo ERROR: %NAME%
) else (
    echo ГОТОВО: %NAME%
)

exit /b 0