• 小脚本:文件保存后,自动上传到git


    闲来无事写写小脚本


    假设已经有一个脚本

    @echo off
    
    :START
    :: 获取当前脚本的路径
    cd /d %~dp0
    
    :: 清空提交注释变量的值
    set commit_msg=
    
    :: 提示用户输入提交注释
    set /p commit_msg=请输入提交注释(输入 n 退出):
    
    :: 如果用户输入内容为 n,则退出脚本
    if /i "%commit_msg%"=="n" (
        exit
    )
    
    :: 如果用户没有输入内容,则使用默认的提交注释
    if "%commit_msg%"=="" (
        set "commit_msg=自动推送: %date:~0,10%,%time:~0,8%"
    )
    
    :: 自动提交
    git init 
    git add . 
    git commit -m "%commit_msg%" 
    git push origin master
    @echo 已经完成,
    
    :: 回到第一步,让用户输入
    goto START
    

    用来做git自动推送的。现在我们希望稍微修改这个脚本,满足以下功能:

    1. 获取该bat脚本所在文件夹下的所有文件,以及所有子文件夹的所有文件的修改时间,取最新时间,记为last_mod_time.
    2. 每隔1秒,重新获取修改时间,记为mod_time
    3. 判断,如果mod_time>last_mod_time,这表示文件在最近出现了修改;于是,触发上面自动提交的脚本(此时直接提交即可,无需用户输入任何内容)
    4. 完成之后,将last_mod_time修改为mod_time
      用windows下的bat文件来写:
    @echo on
    setlocal enabledelayedexpansion
    
    :: 获取当前脚本的路径
    cd /d %~dp0
    
    :: 初始化Git仓库(如果还没有初始化)
    git init
    
    :MONITOR
    :: 强行添加所有文件到暂存区
    git add .
    
    :: 尝试提交更改,使用当前日期和时间作为提交信息,并将输出重定向到变量
    set "commit_msg=自动推送: %date% %time%"
    git commit -m "%commit_msg%" 2>&1 | find "nothing to commit, working tree clean" >nul
    
    if errorlevel 1 (
        :: 如果有提交内容
        echo 有更改提交,推送到远程仓库...
        git push
        echo 已经完成
    ) else (
        :: 如果没有提交内容
        echo 没有检测到更改,休息1秒后继续监控...
    )
    
    :: 等待1秒
    timeout /t 1 >nul
    
    :: 继续监控  
    goto MONITOR
    

    自动git pull

    @echo on
    
    :: 获取当前脚本的路径
    cd /d %~dp0
    
    :MONITOR
    :: 从远程仓库拉取最新代码
    git pull
    
    :: 等待1秒
    timeout /t 1 >nul
    
    :: 继续监控
    goto MONITOR
    
  • 相关阅读:
    算法之冒泡排序
    nodejs+npm的安装与配置
    Mac使用brew搭建kafka集群
    #ACCV2022还有两周截稿#疫情过后期待相聚澳门,相邀参与亚洲视觉盛会
    springboot-统一打印内容
    做私域,转化成交的秘诀!
    孤独、自卑、不合群?80%可能是社交恐惧症
    Golang入门:协程(goroutine)
    以太网帧间隙IFG详解(Interframe Gap帧间距)
    java计算机毕业设计校园周边美食探索及分享平台源代码+系统+数据库+lw文档
  • 原文地址:https://blog.csdn.net/qq5q13638/article/details/139996737