github 拉取重试脚本,支持传入路径和当前路径,通过时间判断是否成功

最近 github 总是拉取失败,镜像站也总连不上。

花点时间写了个脚本,用于拉取。

cmd 水平有限,本来是通过 for 来获取结果的,但是不知道为什么无论成功失败,获取到的都是 Already up to date ,所以通过使用的时间来判断。

for /f "delims=" %%i in ('git pull') do set a=%%i

echo aa=%a%

::判断是否包含指定字符
echo %a%| findstr %pulled% >nul && (
	::%a%包含%b%,拉取完成
	goto BB
) || (
	::%a%不包含%b%
	goto AA
)

:: 等待10S
TIMEOUT /T 10

 以下是 BAT 内容

@echo off
:: 通过在指定目录反复拉取github

::拉取超时时间
set pulltime=5000

:: 重试次数标记
set /a times=0

:: 清屏
cls

:: 检查外部传入的地址
if "%1"=="" (
	echo 未传入地址,使用当前目录
	goto AA
) else (
	echo 跳转到指定目录:%1
	cd /d %1
	goto AA
)

:AA
::echo 当前目录%cd%

::输出空行
echo.
set /a times+=1
echo 当前拉取第%times%次


::获取开始的时间戳
set "$=%temp%\Spring"
>%$% Echo WScript.Echo((new Date()).getTime())
for /f %%a in ('cscript -nologo -e:jscript %$%') do set timestamp1=%%a
del /f /q %$%
::时间戳
::echo %timestamp1%
::时间戳倒数第8个及其之后的字符(避免数字过长)
set /a time1=%timestamp1:~-8%


:: 拉取代码
git pull


::获取结束的时间戳
set "$=%temp%\Spring"
>%$% Echo WScript.Echo((new Date()).getTime())
for /f %%a in ('cscript -nologo -e:jscript %$%') do set timestamp2=%%a
del /f /q %$%
::时间戳
::echo %timestamp2%
::时间戳倒数第8个及其之后的字符(避免数字过长)
set /a time2=%timestamp2:~-8%


::判断消耗的时间
set /a costtime=%time2%-%time1%
echo 消耗的时间:%costtime% 毫秒


REM EQU - 等于
REM NEQ - 不等于
REM LSS - 小于
REM LEQ - 小于或等于
REM GTR - 大于
REM GEQ - 大于或等于
if %costtime% GTR %pulltime% (
	goto AA
) else (
	goto BB
)

goto AA

:BB
echo.
echo.

echo 拉取结束,共尝试%times%次
@pause

猜你喜欢

转载自blog.csdn.net/vistaup/article/details/127494011