标题: [代码合集] 关于:批处理多个bat交互过程中全局变量以及引入全局CMD窗体设置的探讨 [打印本页]
作者: ChinaTB 时间: 2021-7-6 10:31 标题: 关于:批处理多个bat交互过程中全局变量以及引入全局CMD窗体设置的探讨
【背景】
准备用【AutoPlay Menu Builder】写一个光盘引导程序,里面的按钮调用光盘中写好的一组批处理文件实现SQL SERVER 数据库的备份、改名、分离、附加、服务启停、MDF文件的拷贝、SQL文件对数据库的更新,服务端应用软件和客户端应用软件的部署及更新,等等......
-----------------------------------------------
【思路】
我的思路是
【1】-在光盘的目录中创建了一个【script】的脚本文件夹,用1组bat文件相互调用,每一个bat文件相对独立的实现业务需要,再通过绘制了批处理菜单相当于UI的bat文件去组织这些独立的功能bat,最终形成一个批处理的部署安装程序
【2】-将冗余的代码部分全部整理到独立的bat文件中去,通过CALL XXX.bat的方式,相当于ASP开发中的include代码的方式,加载进去就可以了
---------------------------------------------
【问题】
我发现多个BAT文件相互调用,通过CALL指令传参管理,多有不便,于是想用一个独立的bat文件去管理全局变量,将来维护也方便,只要需要的功能性bat或菜单UI层面的bat加载这个全局变量的bat就可以了,不过还是不确定有没有更优雅的解决方案,请各位大佬不吝赐教,谢谢!!!!
*********************************
【我的解决方案】如下:
*********************************
文件结构和关系说明:
【1】setup.bat-----------------------------------------【负责主界面的绘制】
【2】do_SetParameterForConnectDataBase.bat-----【负责独立功能实现】
<其他业务实现的bat文件....略>
【3】getDeclareGlobalVariables.bat--------------【负责定义全局变量】
【4】setConsoleOperation.bat--------------------【负责定义命令行窗口的设置信息,使引用的bat统一风格】
...........................................................
【代码部分】------》》见楼下
作者: ChinaTB 时间: 2021-7-6 10:38
附件好像,放不上去啊,放个百度网盘吧
链接:https://pan.baidu.com/s/1vqMrhC3FhaHQj1sGora9mw
提取码:2021
【script-setup.zip】32.8kb
作者: ChinaTB 时间: 2021-7-6 10:43
【1】setup.bat-----------------------------------------【负责主界面的绘制】- @REM 加载CMD窗口的基础配置信息
- CALL "%~dp0\setConsoleOperation.bat" "isDebug"
-
- @REM 启用【扩展本地环境变量延迟】
- setlocal enabledelayedexpansion
-
- @REM 加载CMD窗口的全局变量信息,并赋值初始化数据的作用
- CALL "%~dp0\getDeclareGlobalVariables.bat"
-
- rem ................ 略
复制代码
【2】do_SetParameterForConnectDataBase.bat-----【负责独立功能实现】- @REM 加载命令号的基础配置信息
- CALL %~dp0\setConsoleOperation.bat
-
- @REM 启用【扩展本地环境变量延迟
- setlocal enabledelayedexpansion
-
- @REM 加载CMD窗口的全局变量信息,并赋值初始化数据的作用
- CALL "%~dp0\getDeclareGlobalVariables.bat"
-
- @REM ::Start=================================相当于BAT的Main函数或者构造函数:开始=================================
-
- CALL :CASE_MainMenu
-
- @echo 更新完成!请按任意键退出批处理程序!
- pause>nul
-
- REM 退出之前设置全局变量给上层BAT文件复用
-
- endlocal & (
- SET dbHost=%dbHost%
- SET dbUserID=%dbUserID%
- SET dbPassword=%dbPassword%
- SET dbName=%dbName%
- )
- GOTO END_CASE
- ::exit /B
-
- rem ................ 略
复制代码
作者: ChinaTB 时间: 2021-7-6 10:44
【3】getDeclareGlobalVariables.bat--------------【负责定义全局变量】- @REM 定义常量(BAT Application 信息)
- IF not defined APP_Name SET APP_Name=干部人事档案信息采集与管理系统
- IF not defined APP_Program SET APP_Program=批处理安装程序
- IF not defined APP_Version SET APP_Version=V2.2.4
- IF not defined APP_VersionDate SET APP_VersionDate=20210701
- IF not defined APP_Company SET APP_Company=宁夏璞石信息技术服务有限责任公司
-
-
- @REM 初始化常量(BAT与 BAT 之间交互过程中将根据用户设置,将临时修改以下变量的内容,声明周期为本母BAT的声明周期)
- IF not defined dbHost SET dbHost=127.0.0.1
- IF not defined dbUserID SET dbUserID=sa
- IF not defined dbPassword SET dbPassword=qq123456
- IF not defined dbNdbNameame SET dbName=PAI_DB_V2_2_4
-
- IF not defined db_mdf_path SET db_mdf_path=
- IF not defined db_ldf_path SET db_ldf_path=
- IF not defined db_mdf_path_1 SET db_mdf_path_1=D:\DataBase\PAI_DB_V2_2_4.mdf
- IF not defined db_ldf_path_1 SET db_ldf_path_1=D:\DataBase\PAI_DB_V2_2_4_log.ldf
- IF not defined db_mdf_path_2 SET db_mdf_path_2=D:\DataBase\PAI_DB_V2_2_4_TEST.mdf
- IF not defined db_ldf_path_2 SET db_ldf_path_2=D:\DataBase\PAI_DB_V2_2_4_TEST_log.ldf
-
- IF not defined db_name_1 SET db_name_1=PAI_DB_V2_2_4
- IF not defined db_name_2 SET db_name_2=PAI_DB_V2_2_4_TEST
- IF not defined sqlfile SET sqlfile=%~dp0\do_BackUpDataBase.sql
- IF not defined FileTmp SET FileTmp=%temp%\sqldata.txt
-
- IF not defined bak_Path SET "bak_Path=C:\backup\"
复制代码
作者: ChinaTB 时间: 2021-7-6 10:45
【4】setConsoleOperation.bat--------------------【负责定义命令行窗口的设置信息,使引用的bat统一风格】- @REM 关闭屏幕回显
- @echo off & PUSHD %~DP0
- @REM 936 GBK(一
- @REM 437 美国英语
- @REM 65001 utf-8
- ::CHCP 936
- ::CHCP 65001
-
- @REM 设置全局变量[Debug:YES][Release:NO]
- SET "isDebug=YES"
- if "%~1"=="isDebug" SET "isDebug=%isDebug%"
-
-
- @REM 设置窗休最大
- MODE CON COLS=70 LINES=100
-
-
- @rem 设置显示窗休
- title 【人事档案系统批处理安装程序】--璞石信息
-
- rem 代码段标记
- :menuMain
- ::cls
-
- @rem 改为绿色字体
- color 0A
-
- set rr="HKCU\Console\%%SystemRoot%%_system32_cmd.exe"
- reg delete %rr% /f>nul
- reg add %rr% /v "WindowPosition" /t REG_DWORD /d 0x00000000 /f>nul
- reg add %rr% /v "WindowSize" /t REG_DWORD /d 0x00640032 /f>nul
- reg add %rr% /v "ScreenBufferSize" /t REG_DWORD /d 0x012C0035 /f>nul
- reg add %rr% /v "FaceName" /t REG_SZ /d "黑体" /f>nul
- reg add %rr% /v "FilterOnPaste" /t REG_DWORD /d 0x00000001 /f>nul
- reg add %rr% /v "FontFamily" /t REG_DWORD /d 0x00000036 /f>nul
- reg add %rr% /v "FontSize" /t REG_DWORD /d 0x00140000 /f>nul
- reg add %rr% /v "FontWeight" /t REG_DWORD /d 0x00000190 /f>nul
- reg add %rr% /v "ForceV2" /t REG_DWORD /d 0x00000001 /f>nul
- reg add %rr% /v "FullScreen" /t REG_DWORD /d 0x00000000 /f>nul
- reg add %rr% /v "HistoryBufferSize" /t REG_DWORD /d 0x00000032 /f>nul
-
-
-
- @REM (1)点阵字体(较小)
- @REM 3×5-------00050003
- @REM 5×8-------00080005
- @REM 6×12------000c0006
- @REM 6×13------000d0006
- @REM 8×16------00100008
- @REM 8×18------00120008
- @REM 10×20-----0014000a
- @REM 10×22-----0016000a
- @REM 12×27-----001b000c
- @REM (2)新宋体(较大)黑体
- @REM 6----00060000---3*7
- @REM 8----00080000---4*9
- @REM 10---000a0000---5*11
- @REM 12---000c0000---6*14
- @REM 14---000e0000---7*16
- @REM 16---00100000---8*18
- @REM 18---00120000---9*21
- @REM 20---00140000---10*23
- @REM 24---00180000---12*27
- @REM 28---001c0000---14*32
- @REM 36---00240000---18*41
- @REM 72---00480000---36*82
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |