Dos

简介

基于游戏开发的工程庞大且文件夹结构复杂,并且使用云仓库进行项目存储项目文件和资源,现在需要能够快速便捷的操作工程,简化拉取、推送操作,经过市场调研,发现dos命令比较符合需求,且在Windows、MAC、Linux系统上都可运行,故而选择dos语言

常用命令和语法

1. 注释:rem和::
2. 输出:echo “内容”
3. 设置变量:set "变量名=变量内容"
4. 变量使用:%变量名称%
5. 判断:if 判断逻辑 (
	内容
) else (
	内容
)
6. 进入对应目录:cd 目录路径(需要注意绝对路径和相对路径的区别)
7. 暂停程序:pause
8. 退出程序:exit
9. 代码段标识设置::标识名称
10. 代码段跳转:goto 标识名称
11. 判断符号:equ(等于)、neq(不等于)、not exist(不存在)、lss(小于)、gtr(大于)、leq(小于或等于)、geq(大于或等于)
12. 复制文件(只能复制文件,不能复制文件夹):copy 要复制的文件 新的目录或者文件名
13. 复制文件和目录树:xcopy 要复制的文件或目录 新的目录或者路径
	参数:
		(1)/exclude: 排除文件名称   排除选项,此处使用的是文件而不是文件名,需要创建一个排除文件,在该文件内部填写需要排除的文件内容,且每个内容都需要独占一行
		(2)/c: 有错误也继续复制
		(3)/h: 也复制隐藏文件和系统文件
		(4)/u: 只复制已经存在于目标中的文件
		(5)/y: 取消显示覆盖提示
		(6)/s: 复制目录和子目录,不包括空目录
		(7)/e: 复制目录和子目录,包括空目录
14. 创建链接:mklink 源路径或文件 参数 link 目标路径或文件

基于git的拉取和操作

git基础命令及版本合并

实操

@echo off
setlocal

rem 临时变量设置
REM %~dp0:当前脚本所在目录
set "currentDir=%~dp0"
set "formDir=%currentDir%..\..\Work\Client\client"
set "formResDir=%formDir%\Assets\StreamingAssets\res"
set "targetDir=%currentDir%newProject"
set "gitbash=XXX:\Git\git-bash.exe"

rem 格式化当前时间,去除空格
for /f "tokens=2 delims==" %%a in ('wmic OS Get LocalDateTime /value') do set "dt=%%a"
set "curTime=%dt:~0,4%_%dt:~4,2%_%dt:~6,2%_%dt:~8,2%%dt:~10,2%%dt:~12,2%"

echo 当前目录:%currentDir%
echo 源目录:%formDir%
echo 源资源目录:%formResDir%
echo 目标目录:%targetDir%
echo 当前时间:%curTime%

rem 创建日志文件
type nul > %currentDir%%curTime%copy.log

rem 对应目录判断是否存在,不存在则拉取仓库到对应目录下
if not exist %formResDir% (
	echo Clone res_android -----------------------
	call git clone git远程仓库路径 %formResDir%
	if %errorlevel% neq 0 (
    	echo Failed to clone res_android repository. >> %currentDir%%curTime%copy.log
    	goto error
	)
)

rem 源目录更新
echo git开始更新
cd /d %formDir% && %gitbash% -c "git pull"
if %errorlevel% neq 0 (
    echo git更新 %formDir% 失败 >> %currentDir%%curTime%copy.log
    goto error
)

cd /d %formResDir% && %gitbash% -c "git pull"
if %errorlevel% neq 0 (
    echo git更新 %formResDir% 失败 >> %currentDir%%curTime%copy.log
    goto error
)

echo git更新完成 >> %currentDir%%curTime%copy.log

:CheckTarDir
rem 判断目标目录是否存在,不存在则创建
if not exist %targetDir% md %targetDir%

:CopyOperate
rem 复制操作
echo 开始复制,请耐心等待...
xcopy "%formDir%\*" "%targetDir%" /s /e /y /c /exclude:%currentDir%DontCopy.txt >>%currentDir%%curTime%copy.log 2>&1
if %errorlevel% gtr 1 (
    echo 复制过程中发生错误 >> %currentDir%%curTime%copy.log
    goto error
) else (
    echo 复制完成 >> %currentDir%%curTime%copy.log
)

:GitPushOperate
rem 本地批处理执行
echo 开始推送
%gitbash% --cd=%targetDir% -c "bash myGit.sh"
if %errorlevel% neq 0 (
    echo 推送失败 >> %currentDir%%curTime%copy.log
    goto error
) else (
    echo 推送完成 >> %currentDir%%curTime%copy.log
)

:end
echo 所有任务执行完毕。
pause
exit /b 0

:error
echo 操作异常,请查看日志: %currentDir%%curTime%copy.log
pause
exit /b 1

参考文献

git rebase详解
git 合并
dos命令
Windows软连接、硬链接

posted @ 2025-05-29 21:23  请明月  阅读(15)  评论(0)    收藏  举报