批處理腳本bat丨遍歷一個包含項目名稱的數組,并對每個文件中的項目執行 git pull 操作 (一鍵拉很多文件的代碼)

文章目錄

  • 前言
  • 一、操作方式
  • 二、文件展示
  • 三、分析代碼結構
  • 四、代碼
  • 五、需要注意的潛在問題
  • 六、改進后的代碼
  • 七、改進說明
  • 八、感謝


前言

由于之前git服務部署在本地服務器,處于代碼安全角度考慮。領導讓我將所有的項目代碼手動物理備份一份并且發給他。
這種傻傻的操作太浪費時間了,所以我就寫了一個批處理腳本用來執行這種操作。
解決方案:遍歷一個包含項目名稱的數組,并對每個文件中的項目執行 git pull 操作。
在這里插入圖片描述

一、操作方式

window 系統新建一個 txt 文件,然后把下面代碼粘貼進去,點擊執行就開始了。

二、文件展示

這個文件要和其他項目文件放在一個同級。
在這里插入圖片描述
文件名要和執行腳本中的數組值保持一致。
在這里插入圖片描述

三、分析代碼結構

首先,代碼開始處聲明了編碼為65001(UTF-8),并開啟了echo,顯示命令的輸出。然后定義了一個數組obj,包含7個項目名稱。通過循環遍歷數組,對每個項目切換到對應的目錄并執行git pull。

  1. 數組定義:使用set命令定義數組元素,索引從0到6。
  2. 循環邏輯:使用標簽:loopStart和goto實現循環,索引從0開始,直到等于數組長度時結束。
  3. 變量處理:使用for/f循環獲取數組元素的值,賦值給objCurrent。
  4. 目錄切換和git操作:cd到對應目錄并執行git pull。
  5. 索引遞增:每次循環后索引加1。

四、代碼

::代碼聲明編碼
chcp 65001
@echo on
::規定數組長度
set objLength=7
::給數組設值
set obj[0]=BasicFramework0
set obj[1]=BasicFramework1
set obj[2]=BasicFramework2
set obj[3]=BasicFramework3
set obj[4]=BasicFramework4
set obj[5]=BasicFramework5
set obj[6]=BasicFramework6::初始索引
set objIndex=0::循環
:loopStart
::判斷索引值是否大于數組長度,大于的話跳到結束,不大于的話繼續循環
if %objIndex% equ %objLength% goto end::初始化變量
set objCurrent=0
for /f "usebackq delims== tokens=1-2" %%i in (`set obj[%objIndex%]`) do (::  賦值變量set objCurrent=%%j
):: 拉代碼
cd D:\git\%objCurrent%
git pull::索引+1
set /a objIndex=%objIndex% + 1
::繼續循環
goto loopStart:endpausecmd /k

五、需要注意的潛在問題

  • 數組長度和索引是否正確處理,特別是當數組元素數量變化時。
  • 目錄路徑是否正確,特別是如果項目目錄名稱包含空格或特殊字符時,是否需要引號。
  • git命令的執行是否需要錯誤處理,例如網絡問題或權限問題。

六、改進后的代碼

chcp 65001 >nul
@echo off
setlocal enabledelayedexpansion:: 動態獲取數組長度
set objLength=0
for /f "tokens=2 delims==" %%a in ('set obj[') do set /a objLength+=1:: 帶進度條和錯誤處理的更新
set objIndex=0
:loopStart
if %objIndex% geq %objLength% goto :endcall :get_array_element objCurrent %objIndex%
echo [%time%] 正在更新:!objCurrent!cd /D "D:\git\!objCurrent!" 2>nul || (echo [錯誤] 目錄不存在:!objCurrent!goto :next
)git pull >> update.log 2>&1
if %errorlevel% neq 0 (echo [失敗] !objCurrent! >> error.log
) else (echo [成功] !objCurrent!
):next
set /a objIndex+=1
goto loopStart:end
echo 所有倉庫更新完成
pause
exit:: 獲取數組元素子程序
:get_array_element <return_var> <index>
set %1=!obj[%2]!
exit /b:: 顯示進度條子程序
:show_progress <percentage>
set /a width=40
set /a pos=%1*width/100
set bar=▓
call :build_bar %pos%
echo [進度:%1%%] [!bar!]
exit /b:build_bar
set bar=
set /a len=%1
for /l %%i in (1,1,%len%) do set bar=!bar!▓
exit /b

七、改進說明

  1. 自動檢測數組長度,無需手動維護objLength;
  2. 添加錯誤處理和日志記錄功能;
  3. 引入進度條可視化更新進度;
  4. 增強路徑處理安全性;
  5. 支持中文路徑和特殊字符;
  6. 添加時間戳記錄操作日志;

使用時只需維護 obj[n]=倉庫名 數組即可,腳本會自動處理后續更新操作。

八、感謝

如果覺得有用歡迎點贊關注收藏。
有問題私信我!!~~
謝謝

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/76654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76654.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/76654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++】C與C++、C++內存空間、堆與棧

C嘎嘎嘎嘎嘎~ C與C的區別與聯系 C內存空間 int global_var; // 未初始化全局變量&#xff0c;BSS段 const char* str "Hello"; // 字符串常量text段 in數據段void func() {static int static_var; // 未初始化的靜態變量&#xff0c;數據段int local_var; …

舵機:機器人領域的“關節革命者”

機器人的技術&#xff0c;每一個細微的進步都可能引領一場行業變革。而在這場變革中&#xff0c;舵機作為機器人關節的核心部件&#xff0c;正悄然上演著一場革命性的應用風暴。從簡單的關節運動到復雜的姿態控制&#xff0c;舵機以其卓越的性能和無限的可能&#xff0c;重新定…

微前端的不斷探索之路—— qiankun 實戰與思考!

全文目錄&#xff1a; 開篇語&#x1f4dd; 前言&#x1f6e0;? 微前端是什么&#xff1f;為什么需要它&#xff1f;&#x1f4a1; 先從“前端痛點”說起&#x1f9d0; 微前端的優勢 &#x1f939;?♀? qiankun 簡介與核心概念&#x1f31f; 為什么選擇 qiankun&#xff1f;…

拆解加密黑盒

在Web安全與數據爬取領域&#xff0c;JavaScript加密黑盒的逆向工程是核心技術之一。本文基于行業通用方法論與實戰案例&#xff0c;提煉出一套標準化的五步逆向流程&#xff0c;涵蓋目標定位、代碼提取、邏輯分析、算法復現到自動化集成的全鏈路解決方案&#xff0c;幫助開發者…

IntelliJ IDEA 中安裝和使用通義靈碼 AI 編程助手教程

隨著人工智能技術的發展&#xff0c;AI 編程助手逐漸成為提升開發效率的強大工具。通義靈碼是阿里云推出的一款 AI 編程助手&#xff0c;它能夠幫助開發者實現智能代碼補全、代碼解釋、生成單元測試等功能&#xff0c;極大地提升了編程效率和代碼質量。 IntelliJ IDEA 是一款廣…

Redis 特性和應用場景

1. Redis特性 1&#xff09;In-memory data structures Redis 在內存中存儲數據&#xff0c;key 是 String&#xff0c; value 可以是 hash, list, set, sorted set, stream ... MySQL主要是通過 “表” 的方式來存儲組織數據的 “關系型數據庫” Redis主要是通過 “鍵值對”…

每天五分鐘深度學習:非線性激活函數的導數

本文重點 本文探討了神經網絡中幾種常見非線性激活函數(Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax)的導數特性。通過對各激活函數導數的數學推導與實際應用分析,揭示了不同激活函數在梯度傳播、收斂速度及模型表達能力方面的差異。研究發現,ReLU及其變體在計算效率與…

redis哨兵機制 和集群有什么區別:

主從&#xff1a; 包括一個master節點 和多個slave節點&#xff1a; master節點負責數據的讀寫&#xff0c;slave節點負責數據的讀取&#xff0c;master節點收到數據變更&#xff0c;會同步到slave節點 去實現數據的同步。通過這樣一個架構可以去實現redis的一個讀寫分離。提升…

關于讀完《毛澤東選集》的一些思考迭代

看完毛選前四卷&#xff0c;從革命初期一直講到抗戰勝利&#xff0c;共75.8W字&#xff0c;花費67個小時讀完。從1925年發表的“中國社會各階級的分析”&#xff0c;跨越100年&#xff0c;通過67個小時向主席學習到&#xff1a; 實事求是 從實踐中來再到實踐中去 用辯證與發展…

MySQL——MVCC(多版本并發控制)

目錄 1.MVCC多版本并發控制的一些基本概念 MVCC實現原理 記錄中的隱藏字段 undo log undo log 版本鏈 ReadView 數據訪問規則 具體實現邏輯 總結 1.MVCC多版本并發控制的一些基本概念 當前讀&#xff1a;該取的是記錄的最新版本&#xff0c;讀取時還要保證其他并發事務…

【Linux篇】深入理解文件系統:從基礎概念到 ext2 文件系統的應用與解析

文件系統的魔法&#xff1a;讓計算機理解并存儲你的數據 一. 文件系統1.1 塊1.2 分區1.3 inode(索引節點) 二. ext2文件系統2.1 認識文件系統2.2 Block Group (塊組)2.2.1 Block Group 的基本概念2.2.2 Block Group 的作用 2.3 塊組內部結構2.3.1 超級塊&#xff08;Super Bloc…

3 VS Code 配置優化與實用插件推薦:settings.json 詳解、CodeGeeX 智能編程助手及插件離線安裝方法

1 優化 settings.json 文件 1.1 settings.json 簡介 settings.json 是 VS Code 的核心配置文件&#xff0c;用于存儲用戶的個性化設置和偏好。通過該文件&#xff0c;用戶可以自定義和覆蓋 VS Code 的默認行為&#xff0c;包括但不限于以下方面&#xff1a; 編輯器外觀&#…

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識 1. 引言 在微服務架構中&#xff0c;分布式事務處理是一個復雜且常見的問題。隨著業務規模的擴大&#xff0c;單體應用逐漸拆分為多個微服務&#xff0c;每個服務…

力扣面試150題--有效的數獨

Day 19 題目描述 思路 其實還挺簡單的&#xff0c;主要的難點在于如何判斷每個小數獨是否滿足要求 詳細見代碼 class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set new HashSet<>();//處理行HashSet<Character> set1…

達夢數據庫-學習-15-大內存SQL相關視圖介紹

目錄 一、環境信息 二、介紹 三、數據字典表 1、V$MEM_POOL 2、V$SQL_STAT 3、V$SQL_STAT_HISTORY 4、V$LARGE_MEM_SQLS 5、V$SYSTEM_LARGE_MEM_SQLS 四、總結 一、環境信息 名稱值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系統CentOS Linux release 7.9.2009 (Co…

從0到1使用C++操作MSXML

1. 引言 MSXML&#xff08;Microsoft XML Core Services&#xff09;是微軟提供的一套用于處理XML的COM組件庫&#xff0c;廣泛應用于Windows平臺的XML解析、驗證、轉換等操作。本文將詳細介紹如何從零開始&#xff0c;在C中使用MSXML解析和操作XML文件&#xff0c;包含完整的…

Windows 系統下用 VMware 安裝 CentOS 7 虛擬機超詳細教程(包含VMware和鏡像安裝包)

前言 資源 一、準備工作 &#xff08;一&#xff09;下載 VMware Workstation &#xff08;二&#xff09;下載 CentOS 7 鏡像 二、安裝 VMware Workstation&#xff08;比較簡單&#xff0c;按下面走即可&#xff09; 三、創建 CentOS 7 虛擬機 四、安裝 CentOS 7 系統…

應用安全系列之四十五:日志偽造(Log_Forging)之三

1、簡介 針對Java的日志系統有多種&#xff0c;本文主要描述如何通過修改配置文件來解決logback和log4j的日志偽造問題。 2、logback 2.1、系統提供的解決方案 在logback.xml中配置編碼器自動轉義特殊字符&#xff1a; 復制 <configuration><appender name"C…

(五)循環鏈表、雙向鏈表

循環鏈表 介紹 在單選鏈表基礎上&#xff0c;下一個節點指向前一個節點&#xff0c;最后一個節點指向起點 封裝循環鏈表 為了讓循環鏈表可以繼承自單向鏈表&#xff0c;對其進行重構 給其增加一個tail屬性&#xff08;尾節點&#xff09;&#xff0c;對各方法進行重寫整理 …

仙劍奇俠傳98柔情版游戲秘籍

戰斗秘技&#xff1a;在戰斗中輸入 “cheat”&#xff0c;然后輸入 “v” 直接取勝&#xff1b;輸入 “y” 敵人不攻擊。另外&#xff0c;在戰斗中按 “XJPXZ123” 加 “shift” 鍵&#xff0c;攻擊力增加 1000&#xff05;。等級提升秘籍&#xff1a;當李逍遙等級到達 99 級時…