bat 一些骚操作

::关闭输入,比较@echo off、echo off、@echo on、echo on区别
@echo off
::变量延迟方式1:setlocal enabledelayedexpansion,注意后面变量要!变量!格式才有效
setlocal enabledelayedexpansion
::设置dos界面字显示颜色
color 0A
::设置dos窗口的的标题
title 标题名字
echo %date% %time%
::当前文件所在根目录类似%~dp0还有一些,可自行百度
set root=%~dp0
::设置配置文件
::===============================================================================
::================================读取配置文件===================================
set config_file=%root%my.cnf
rem **for的强调**
for /f "eol=# tokens=1,2 delims==" %%i in (%config_file%) do (
    if %%i==database (set database=%%j)
    if %%i==user (set user=%%j)
    if %%i==password (set password=%%j)
    if %%i==config_path (set config_path=%%j)
    if %%i==mysq_bin (set mysq_bin=%%j)
)
echo !database!
echo !user!
echo !password!
echo !mysq_bin!
echo !config_path!
::
::===============================================================================
::================================软件设置区=====================================
:================================================================================
set hideform=True
::这里设置是否隐藏bat窗口,如果是请将"set hideform=False"改成"set hideform=True"即可.(建议不要立即就改,因为待会你要看看效果呢~)
set "message=数据库连接信息确认:"
::对话框中要显示的内容
set "title=更新说明"
::对话框的标题
set "note=(必填项)比如:优化某某库、更新某某文件、新增某某关键字--作者:张三"
::输入框中的内容注释[这里一般为空(set "note="),这是个测试,所以弄上了点字符.]
:===============================================================================
:===============================================================================
::判断是否隐藏bat窗口 
if /i "%hideform%"=="True" (
if "%1"=="h" goto begin
mshta vbscript:createobject^("wscript.shell"^).run^("%~nx0 h",0^)^(window.close^)&&exit
)
:begin
::使用:+字符串实现标识作用,常见goto使用到标识
set "vbs=%Temp%\GotUserInputedDataProgram.vbs"
set "data=%Temp%\UserInputedData.tmp"
::====================================
::=========开始预置对话框=============
::====================================
::查找文件是否存在,存在就删除
if exist "%vbs%" del /s /q /f "%vbs%">nul
::delete file
echo On Error Resume Next>>"%vbs%"
echo Dim fso,wri,data,file>>"%vbs%"
::创建一个进行交互的窗口 
echo Set fso=Wscript.CreateObject^("Scripting.FileSystemObject"^)>>"%vbs%"
echo file="%data%">>"%vbs%"
echo if fso.FileExists^(file^) Then fso.DeleteFile^(file^)>>"%vbs%"
echo Set wri=fso.CreateTextFile^(file,True^)>>"%vbs%"
::窗口输入的字符串保存在data中
::批处理中和InputBox使用时要实现换行需要按如下格式写:变量+^&vbcrlf^&+变量,^是bat转义符号,&是vbs中的连接符(此处必须使用^对&进行转义原样输入inputbox函数中)
echo data=InputBox^("%message%"^&vbcrlf^&"用户名:!user!"^&vbcrlf^&"密&码:!password!"^&vbcrlf^&"库&名:!database!","%title%","%note%"^)>>"%vbs%"
echo wri.Write data>>"%vbs%"
echo wri.Close>>"%vbs%"
echo Set fso=Nothing>>"%vbs%"
echo Set op=Nothing>>"%vbs%"
echo fso.DeleteFile^(Wscript.ScriptFullName^)>>"%vbs%"
echo Wscript.Quit>>"%vbs%"
::===============================================================================
::调用执行一个vb程序,就是上面创建的窗口 
call "%vbs%"
::获取data中的内容,利用循环获取 
for /f "delims=" %%i in (%data%) do set "content=%%i"
if exist "%vbs%" del /s /q /f "%data%">nul
if exist "%vbs%" del /s /q /f "%vbs%">nul
::如果输入内容为空就停止
if "%content%"=="" goto over
::===============================================================================
::==================================bat直接执行mysql的sql语句====================
for /F %%i in ('!mysq_bin!\mysql.exe -u!user! -p!password! !database! -e "select VERSION_CODE from `client_auto_update` ORDER BY UPDATE_TIME DESC LIMIT 1"') do ( set version_code=%%i)
echo version_code=%version_code%
::分割
for /F "eol=# tokens=1,2 delims=-" %%i in ("!version_code!") do (
    if "%%j"=="" (set index=1) else (set /A index=%%j+1)
    set new_version=%%i-!index!
    echo %%i
)
echo new_version=!new_version!
::===============================================================================
::==================================bat直接执行mysql的sql语句====================
::目录打包成zip
::set WinRAR_Dir=%ProgramFiles%\WinRAR
::set PATH=%PATH%;%WinRAR_Dir%
::直接使用独立exe程序
%root%WinRAR.exe a -r "!config_path!\!new_version!.zip" -rr -m5 %root%目录 -ibck -EP1 %root%目录
::把更新信息写入表中
!mysq_bin!\mysql.exe -u!user! -p!password! !database! -e "DELETE FROM `表名`  WHERE  col1 = '!new_version!';"
!mysq_bin!\mysql.exe -u!user! -p!password! !database! -e "INSERT INTO `表名` (col1,col2,...) values(value1,value2,...)"
::记录更新时间和内容
echo #############更新时间:%date% %time% >>%root%log.txt
echo 更新包名:!new_version!.zip >>%root%log.txt
echo 更新内容:!content! >>%root%log.txt
:over
pause

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值