本人在上一篇文章中为了解决SVN客户端CLeanup使用中遇到的问题,具体参考:https://mp.****.net/console/editor/html/109098420
编写了两个windows下的bat脚本,下面说说这两个脚本中的内容
(吐槽一下:windows的bat脚本语言语法非常严格,比较起C++、JAVA这种高级编程语言来说稍微不注意就不能正常运行,也没有好用的IDE,但有些场合还不得不用)
install_sqlite.bat脚本
if exist c:\software\sqlite3 ( echo "has exist" ) else ( if not exist c:\software\sqlite3 md c:\software\sqlite3 xcopy sqlite c:\software\sqlite3\sqlite\ /E /C ) pause |
知识点 1. if exist else 语法 ,可以利用window 提供的帮助,具体在cmd下输入 if /? 回车
注意:else 前后需要有空格,否则脚本不能正确进行
知识点 2. xcopy 是用于复制文件和文件夹 ,可以利用window 提供的帮助,具体在cmd下输入 xcopy /? 回车
注意:脚本中 我是要把sqlite整个文件夹及其子文件全部复制到 c:\software\sqlite3\sqlite\路径***意路径 c:\software\sqlite3\sqlite\最后需要写上 \,否则执行脚本会有以下提示,操作就需要人工参与。
deal_svn_cleanup.bat脚本
@echo on
if exist c:\software\sqlite3 ( goto DEALCLEAN ) else ( goto ECHOTIP )
:DEALCLEAN set path=%path%;c:\software\sqlite3\sqlite\ rem echo %path% cd .svn sqlite3 wc.db "delete from work_queue" sqlite3 wc.db "delete from wc_lock" pause exit pause
:ECHOTIP echo "sqlite not exist" pause |
知识点 3. 在if else 语句内容使用了跳转goto语法
说明:本身没有使用跳转语法,但是 像 set path 语句和cd 语句直接放在if语句中不能成功运行,因此通过跳转语句解决,这里本人没有细究原因。
其他说明:
下面给出deal_svn_cleanup.bat脚本的中间版本,该脚本是有问题的,但是可以学习,若开启变量延迟后变量,在if语句中修改变量,注意%bExist% 要写成 !bExist!才生效
@echo off rem setlocal enabledelayedexpansion rem 若开启变量延迟后变量 %bExist% 需要写为 !bExist! set bExist=false
rem echo %bExist%
if exist c:\software\sqlite3 ( echo "sqlite exist" set bExist=true ) else ( echo "not exist" )
rem echo %bExist% if "%bExist%" == "true" ( rem echo "execute delete command" set path="%path%;c:\software\sqlite3\sqlite\" rem echo %path% cd .svn sqlite3 wc.db "delete from work_queue"; sqlite3 wc.db "delete from wc_lock"; ) else ( echo "not execute delete command" )
pause |
总结:写bat脚本语句需要多尝试、多实践,加油