mirror of
https://github.com/DSPBluePrints/FactoryBluePrints.git
synced 2026-03-22 06:53:22 +08:00
400
一键更新仓库.bat
Normal file
400
一键更新仓库.bat
Normal file
@@ -0,0 +1,400 @@
|
||||
@echo off
|
||||
|
||||
SETLOCAL enableextensions enabledelayedexpansion
|
||||
chcp 65001 >NUL
|
||||
|
||||
REM 检查参数,如果不为空则只运行特定函数
|
||||
IF "x%1" == "x" GOTO START
|
||||
CALL :%1
|
||||
|
||||
ENDLOCAL
|
||||
EXIT /b %errorlevel%
|
||||
|
||||
|
||||
:START
|
||||
|
||||
REM 本地目录,如果当前目录有.git文件夹的存在,则不使用此目录
|
||||
SET LocalFolder=FactoryBluePrints
|
||||
|
||||
REM 仓库地址
|
||||
SET RepoUrl=https://github.com/DSPBluePrints/FactoryBluePrints.git
|
||||
|
||||
REM 仓库README地址
|
||||
SET READMEUrl=https://github.com/DSPBluePrints/FactoryBluePrints/blob/main/README.md
|
||||
|
||||
REM MinGit安装位置
|
||||
SET MinGitFolder=%ALLUSERSPROFILE%\MinGit
|
||||
|
||||
REM MinGit版本号
|
||||
SET MinGitVersion=2.52.0
|
||||
|
||||
CALL :SETUP_MINGIT
|
||||
IF %errorlevel% NEQ 0 (
|
||||
GOTO EOF_WITH_ERROR
|
||||
)
|
||||
|
||||
CALL :CLONE_REPO
|
||||
IF %errorlevel% == 1 (
|
||||
GOTO EOF_WITH_ERROR
|
||||
)
|
||||
IF %errorlevel% == -1 (
|
||||
GOTO END
|
||||
)
|
||||
IF %errorlevel% NEQ 0 (
|
||||
GOTO END_WITH_ERROR
|
||||
)
|
||||
|
||||
CALL :UPDATE_REPO
|
||||
IF %errorlevel% == 1 (
|
||||
GOTO EOF
|
||||
)
|
||||
IF %errorlevel% NEQ 0 (
|
||||
GOTO END_WITH_ERROR
|
||||
)
|
||||
|
||||
|
||||
:END
|
||||
|
||||
if NOT [%GIT_PATH%]==[] "%GIT_PATH%" config --global --unset-all safe.directory "\*"
|
||||
ENDLOCAL
|
||||
ECHO [92m 按任意键关闭此窗口...[0m
|
||||
PAUSE >NUL
|
||||
EXIT /b 0
|
||||
|
||||
|
||||
:END_WITH_ERROR
|
||||
|
||||
ECHO [91m运行过程因为出现错误而中止,蓝图文件没有发生任何变动。[0m
|
||||
ECHO [91m常见问题请阅读说明:%READMEUrl%。[0m
|
||||
|
||||
|
||||
:EOF_WITH_ERROR
|
||||
|
||||
ENDLOCAL
|
||||
ECHO [92m 按任意键关闭此窗口...[0m
|
||||
PAUSE >NUL
|
||||
EXIT /b 1
|
||||
|
||||
|
||||
REM ==================== Steps ====================
|
||||
|
||||
:SETUP_MINGIT
|
||||
|
||||
REM 查找系统可用的Git,如果没有就安装MinGit
|
||||
|
||||
REM 检查Git是否安装
|
||||
git --version >NUL 2>&1 && (SET hasGit=1) || (SET hasGit=0)
|
||||
IF %hasGit% NEQ 0 (
|
||||
SET GIT_PATH=git
|
||||
EXIT /b 0
|
||||
)
|
||||
"%GIT_INSTALL_ROOT%\bin\git" --version >NUL 2>&1 && (SET hasGit=1) || (SET hasGit=0)
|
||||
IF %hasGit% NEQ 0 (
|
||||
SET GIT_PATH=%GIT_INSTALL_ROOT%\bin\git
|
||||
EXIT /b 0
|
||||
)
|
||||
"%CD%\MinGit\cmd\git" --version >NUL 2>&1 && (SET hasGit=1) || (SET hasGit=0)
|
||||
IF %hasGit% NEQ 0 (
|
||||
SET GIT_PATH=%CD%\MinGit\cmd\git
|
||||
EXIT /b 0
|
||||
)
|
||||
"%MinGitFolder%\cmd\git" --version >NUL 2>&1 && (SET hasGit=1) || (SET hasGit=0)
|
||||
IF %hasGit% NEQ 0 (
|
||||
SET GIT_PATH=%MinGitFolder%\cmd\git
|
||||
EXIT /b 0
|
||||
)
|
||||
|
||||
|
||||
:INSTALL_MINGIT
|
||||
|
||||
REM 安装MinGit
|
||||
ECHO [1m^>^> 系统内未找到已经安装的Git,将下载MinGit并安装到%MinGitFolder%。[0m
|
||||
ECHO [1m^>^> 如果以后不再需要可以手动删除这个目录。[0m
|
||||
ECHO [1m^>^> 请选择下载方式:[0m
|
||||
ECHO [1m 0. [36m从GitHub原始地址下载 (直接回车默认选择此方式)[0m
|
||||
ECHO [1m 1. [36m使用ghfast.top代理[0m
|
||||
ECHO [1m 2. [36m使用gh-proxy.org代理[0m
|
||||
ECHO [1m 3. [36m使用gh.ddlc.top代理[0m
|
||||
ECHO [1m 4. [36m使用www.ytools.cc/gh代理[0m
|
||||
ECHO [1m 5. [36m使用git.yylx.win代理[0m
|
||||
ECHO [1m 6. [36m使用ghfile.geekertao.top代理[0m
|
||||
ECHO [1m 7. [36m使用ghm.078465.xyz代理[0m
|
||||
ECHO [1m 8. [36m使用gitproxy.127731.xyz代理[0m
|
||||
ECHO [1m 9. [36m使用jiashu.1win.eu.org代理[0m
|
||||
ECHO [1m 10. [36m使用github.tbedu.top代理[0m
|
||||
ECHO [1m Q. [36m我不要下载了,我要退出[0m
|
||||
|
||||
|
||||
:INSTALL_MINGIT_INPUT
|
||||
|
||||
SET /p res=[1m^>^> 请输入:[0m
|
||||
SET GHPROXY=
|
||||
IF /i "x%res%"=="x" (
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="0" (
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="1" (
|
||||
SET GHPROXY=ghfast.top/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="2" (
|
||||
SET GHPROXY=gh-proxy.org/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="3" (
|
||||
SET GHPROXY=gh.ddlc.top/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="4" (
|
||||
SET GHPROXY=www.ytools.cc/gh/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="5" (
|
||||
SET GHPROXY=git.yylx.win/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="6" (
|
||||
SET GHPROXY=ghfile.geekertao.top/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="7" (
|
||||
SET GHPROXY=ghm.078465.xyz/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="8" (
|
||||
SET GHPROXY=gitproxy.127731.xyz/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="9" (
|
||||
SET GHPROXY=jiashu.1win.eu.org/https://
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="10" (
|
||||
SET GHPROXY=github.tbedu.top/
|
||||
GOTO INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
)
|
||||
|
||||
IF /i "%res%"=="Q" (
|
||||
ECHO [96m-- 已取消MinGit下载。[0m
|
||||
EXIT /b 1
|
||||
)
|
||||
ECHO [91m 输入有误。[0m
|
||||
GOTO INSTALL_MINGIT_INPUT
|
||||
|
||||
|
||||
:INSTALL_MINGIT_GHPROXY_WAS_SET
|
||||
|
||||
SET MinGitUrl=https://%GHPROXY%github.com/git-for-windows/git/releases/download/v%MinGitVersion%.windows.1/MinGit-%MinGitVersion%-64-bit.zip
|
||||
|
||||
rmdir /s /q %MinGitFolder% 1>NUL 2>NUL
|
||||
mkdir %MinGitFolder% 2>NUL
|
||||
|
||||
ECHO | set /p=[96m-- 正在下载MinGit...[0m
|
||||
powershell -Command "(New-Object Net.WebClient).DownloadFile('%MinGitUrl%', '%MinGitFolder%\MinGit.zip')"
|
||||
IF %errorlevel% NEQ 0 (
|
||||
ECHO [91m 错误![0m
|
||||
ECHO [91m!! MinGit下载失败,请检查你的网络,或使用加速器/挂梯子后再次运行。[0m
|
||||
EXIT /b 1
|
||||
)
|
||||
ECHO [96m 完成[0m
|
||||
|
||||
ECHO | set /p=[96m-- 正在解压MinGit...[0m
|
||||
powershell -Command "(New-Object -Com Shell.Application).NameSpace('%MinGitFolder%').CopyHere((new-object -com shell.application).NameSpace('%MinGitFolder%\MinGit.zip').Items(), 1556)"
|
||||
DEL /f /q %MinGitFolder%\MinGit.zip
|
||||
IF %errorlevel% NEQ 0 (
|
||||
ECHO [91m 错误![0m
|
||||
ECHO [91m!! MinGit解压失败,可能是网络问题导致下载的文件不完整。[0m
|
||||
EXIT /b 1
|
||||
)
|
||||
ECHO [96m 完成[0m
|
||||
SET GIT_PATH=%MinGitFolder%\cmd\git
|
||||
EXIT /b %errorlevel%
|
||||
|
||||
|
||||
:SETUP_MIRROR
|
||||
|
||||
REM 设置仓库镜像或代理
|
||||
|
||||
ECHO [1m^>^> 请选择仓库镜像或代理:[0m
|
||||
ECHO [1m 0. [36mGitHub (将删除已设置的镜像)[0m
|
||||
ECHO [1m 1. [36m使用Bitbucket[0m
|
||||
ECHO [1m 2. [36m使用Codeberg[0m
|
||||
ECHO [1m 10. [36m使用ghfast.top代理GitHub[0m
|
||||
ECHO [1m 11. [36m使用gh-proxy.org代理GitHub[0m
|
||||
ECHO [1m 12. [36m使用gh.ddlc.top代理GitHub[0m
|
||||
ECHO [1m 13. [36m使用www.ytools.cc/gh代理GitHub[0m
|
||||
ECHO [1m 14. [36m使用git.yylx.win代理GitHub[0m
|
||||
ECHO [1m 15. [36m使用ghfile.geekertao.top代理GitHub[0m
|
||||
ECHO [1m 16. [36m使用ghm.078465.xyz代理GitHub[0m
|
||||
ECHO [1m 17. [36m使用gitproxy.127731.xyz代理GitHub[0m
|
||||
ECHO [1m 18. [36m使用jiashu.1win.eu.org代理GitHub[0m
|
||||
ECHO [1m 19. [36m使用github.tbedu.top代理GitHub[0m
|
||||
ECHO [1m Q. [36m我不要设置了,我要退出[0m
|
||||
|
||||
|
||||
:SETUP_MIRROR_INPUT
|
||||
|
||||
SET /p res=[1m^>^> 请输入:[0m
|
||||
|
||||
SET MIRROR_ADDR=
|
||||
|
||||
IF /i "%res%"=="0" (
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="1" (
|
||||
SET MIRROR_ADDR=https://bitbucket.org/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="2" (
|
||||
SET MIRROR_ADDR=https://codeberg.org/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="10" (
|
||||
SET MIRROR_ADDR=https://ghfast.top/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="11" (
|
||||
SET MIRROR_ADDR=https://gh-proxy.org/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="12" (
|
||||
SET MIRROR_ADDR=https://gh.ddlc.top/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="13" (
|
||||
SET MIRROR_ADDR=https://www.ytools.cc/gh/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="14" (
|
||||
SET MIRROR_ADDR=https://git.yylx.win/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="15" (
|
||||
SET MIRROR_ADDR=https://ghfile.geekertao.top/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="16" (
|
||||
SET MIRROR_ADDR=https://ghm.078465.xyz/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="17" (
|
||||
SET MIRROR_ADDR=https://gitproxy.127731.xyz/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="18" (
|
||||
SET MIRROR_ADDR=https://jiashu.1win.eu.org/https://github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="19" (
|
||||
SET MIRROR_ADDR=https://github.tbedu.top/github.com/
|
||||
GOTO MIRROR_WAS_SET
|
||||
)
|
||||
IF /i "%res%"=="Q" (
|
||||
EXIT /b 1
|
||||
)
|
||||
ECHO [91m 输入有误。[0m
|
||||
GOTO SETUP_MIRROR_INPUT
|
||||
|
||||
|
||||
:MIRROR_WAS_SET
|
||||
|
||||
REM Loop through all url.*.insteadOf entries
|
||||
FOR /F "USEBACKQ tokens=1,* delims= " %%a IN (`"%GIT_PATH%" config --local --get-regexp ^^url\..*\.insteadOf$`) DO (
|
||||
IF "%%b"=="https://github.com/" (
|
||||
"%GIT_PATH%" config --unset-all "%%a"
|
||||
)
|
||||
)
|
||||
|
||||
IF x%MIRROR_ADDR% NEQ x (
|
||||
"%GIT_PATH%" config --local url."%MIRROR_ADDR%".insteadOf "https://github.com/"
|
||||
)
|
||||
|
||||
EXIT /b %errorlevel%
|
||||
|
||||
|
||||
:CLONE_REPO
|
||||
|
||||
REM 如果仓库不存在,就Clone仓库
|
||||
|
||||
"%GIT_PATH%" config --global core.quotepath false
|
||||
"%GIT_PATH%" config --global --add safe.directory "*"
|
||||
IF EXIST "%CD%\%LocalFolder%\.git" EXIT /b 0
|
||||
IF EXIST "%CD%\.git" (
|
||||
SET LocalFolder=.
|
||||
EXIT /b 0
|
||||
)
|
||||
FOR /F "tokens=* USEBACKQ" %%F IN (`ECHO %CD%`) DO (
|
||||
IF "%%~nF"=="%LocalFolder%" (
|
||||
SET LocalFolder=.
|
||||
)
|
||||
)
|
||||
ECHO [96m-- 未检测到已下载的蓝图仓库,将重新拉取。[0m
|
||||
|
||||
IF NOT EXIST "%LocalFolder%" (
|
||||
MKDIR "%LocalFolder%"
|
||||
IF %errorlevel% NEQ 0 (
|
||||
ECHO [91m 错误![0m
|
||||
ECHO [91m!! 无法创建本地目录 %LocalFolder% 。请检查权限设置。[0m
|
||||
EXIT /b 1
|
||||
)
|
||||
)
|
||||
|
||||
PUSHD %LocalFolder% 1>NUL 2>NUL
|
||||
"%GIT_PATH%" init
|
||||
|
||||
REM 设置镜像
|
||||
CALL :SETUP_MIRROR
|
||||
IF %errorlevel% NEQ 0 (
|
||||
EXIT /b 1
|
||||
)
|
||||
|
||||
ECHO [96m-- 正在拉取仓库。容量较大,请耐心等待...[0m
|
||||
"%GIT_PATH%" remote add origin "%RepoUrl%"
|
||||
"%GIT_PATH%" fetch --depth=1 origin
|
||||
"%GIT_PATH%" reset --hard origin/main
|
||||
"%GIT_PATH%" checkout -t origin/main
|
||||
IF %errorlevel% NEQ 0 (
|
||||
ECHO [91m 错误![0m
|
||||
ECHO [91m!! 仓库拉取失败。如果没有其他警告,这通常是网络波动,重试就行,无效请使用加速器/挂梯子后再更新。[0m
|
||||
POPD >NUL
|
||||
EXIT /b 2
|
||||
)
|
||||
ECHO [92m^<^< 蓝图文件拉取完毕,现在可以直接关闭此窗口。[0m
|
||||
POPD >NUL
|
||||
EXIT /b -1
|
||||
|
||||
|
||||
:UPDATE_REPO
|
||||
|
||||
REM 拉取更新仓库
|
||||
|
||||
PUSHD %LocalFolder% 1>NUL 2>NUL
|
||||
IF NOT EXIST ".\.gitignore" (
|
||||
"%GIT_PATH%" reset --hard 1>NUL 2>NUL
|
||||
)
|
||||
|
||||
REM 检查远程路径,因为镜像的原因不再检查
|
||||
REM FOR /F "tokens=* USEBACKQ" %%F IN (`"%GIT_PATH%" remote get-url origin`) DO (
|
||||
REM SET RemoteUrl=%%F
|
||||
REM )
|
||||
REM IF "%RemoteUrl%" NEQ "%RepoUrl%" (
|
||||
REM ECHO [96m-- 仓库URL不匹配,修改仓库URL...[0m
|
||||
REM "%GIT_PATH%" remote set-url origin "%RepoUrl%"
|
||||
REM )
|
||||
|
||||
SET GIT_SSL_NO_VERIFY=true
|
||||
ECHO | set /p=[96m-- 正在更新蓝图仓库...[0m
|
||||
"%GIT_PATH%" pull origin main 1>NUL 2>NUL
|
||||
IF %errorlevel% NEQ 0 (
|
||||
POPD >NUL
|
||||
ECHO [91m 错误![0m
|
||||
ECHO [91m!! 更新失败。如果没有其他警告,这通常是网络波动,重试就行,建议使用加速器/挂梯子,或者切换镜像/代理后再更新。[0m
|
||||
EXIT /b 1
|
||||
)
|
||||
|
||||
ECHO [96m 完成[0m
|
||||
POPD 1>NUL 2>NUL
|
||||
ECHO [92m^<^< 蓝图文件更新完毕。[0m
|
||||
EXIT /b 0
|
||||
43
切换镜像.bat
Normal file
43
切换镜像.bat
Normal file
@@ -0,0 +1,43 @@
|
||||
@echo off
|
||||
|
||||
chcp 65001 >NUL
|
||||
|
||||
SETLOCAL enableextensions enabledelayedexpansion
|
||||
|
||||
REM 本地目录,如果当前目录有.git文件夹的存在,则不使用此目录
|
||||
SET LocalFolder=FactoryBluePrints
|
||||
|
||||
REM 设置MinGit
|
||||
CALL "一键更新仓库.bat" SETUP_MINGIT
|
||||
|
||||
IF %errorlevel% NEQ 0 (
|
||||
GOTO END
|
||||
)
|
||||
|
||||
IF EXIST "%CD%\%LocalFolder%\.git" GOTO SET_MIRROR
|
||||
IF EXIST "%CD%\.git" (
|
||||
SET LocalFolder=.
|
||||
GOTO SET_MIRROR
|
||||
)
|
||||
FOR /F "tokens=* USEBACKQ" %%F IN (`ECHO %CD%`) DO (
|
||||
IF "%%~nF"=="%LocalFolder%" (
|
||||
SET LocalFolder=.
|
||||
)
|
||||
)
|
||||
|
||||
ECHO [96m-- 未检测到已下载的蓝图仓库。[0m
|
||||
GOTO END
|
||||
|
||||
:SET_MIRROR
|
||||
PUSHD %LocalFolder% 1>NUL 2>NUL
|
||||
|
||||
REM 设置镜像
|
||||
CALL "%~dp0一键更新仓库.bat" SETUP_MIRROR
|
||||
|
||||
POPD 1>NUL 2>NUL
|
||||
|
||||
:END
|
||||
|
||||
ENDLOCAL
|
||||
ECHO [92m 按任意键关闭此窗口...[0m
|
||||
PAUSE >NUL
|
||||
Reference in New Issue
Block a user