@echo off setlocal enabledelayedexpansion REM Скрипт для клонирования проектов из TSV файла REM Формат TSV: check, project_name, project_url REM Проверяем, что передан аргумент с именем файла if "%~1"=="" ( echo Использование: %0 ^ [base_dir] echo Пример: %0 projects.tsv echo Пример: %0 projects.tsv C:\Projects echo Пример: %0 projects.tsv .\projects echo Пример: %0 projects.tsv ..\workspace exit /b 1 ) set TSV_FILE=%~1 set BASE_DIR=%~2 REM Если base_dir не указан, используем текущую директорию if "!BASE_DIR!"=="" set BASE_DIR=. REM Проверяем существование файла if not exist "%TSV_FILE%" ( echo Ошибка: Файл '%TSV_FILE%' не найден exit /b 1 ) REM Создаем базовую директорию, если она не существует if not exist "!BASE_DIR!" ( echo Создаем базовую директорию: !BASE_DIR! mkdir "!BASE_DIR!" ) echo Начинаем клонирование проектов из файла: %TSV_FILE% echo Базовая директория: !BASE_DIR! echo ================================================ REM Читаем TSV файл построчно for /f "usebackq delims=" %%a in ("%TSV_FILE%") do ( set "line=%%a" REM Пропускаем пустые строки if not "!line!"=="" ( REM Разбиваем строку по табуляции for /f "tokens=1,2,3 delims= " %%b in ("!line!") do ( set "check=%%b" set "project_name=%%c" set "project_url=%%d" REM Пропускаем заголовки if not "!check!"=="check" ( REM Проверяем, нужно ли клонировать (если check = X) if /i "!check!"=="X" ( echo Клонирование: !project_name! echo URL: !project_url! REM Проверяем, что директория не существует set "PROJECT_PATH=!BASE_DIR!\!project_name!" if exist "!PROJECT_PATH!" ( echo Предупреждение: Директория '!PROJECT_PATH!' уже существует, пропускаем echo --- ) else ( REM Выполняем git clone git clone "!project_url!" "!PROJECT_PATH!" if !errorlevel! equ 0 ( echo ✓ Успешно клонирован: !project_name! ) else ( echo ✗ Ошибка при клонировании: !project_name! ) echo --- ) ) else ( echo Пропускаем: !project_name! (check = '!check!') ) ) ) ) ) echo Клонирование завершено! pause