26
2024
01
01:28:10

运维必学 | 变量定义调用-从零开始学Windows批处理(Batch)编程系列教程



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

文章目录:

2d1611c962a13db18a65fda27a24a8ac.png


0x00 批处理(Batch)变量定义调用

描述: 同许多脚本语言一样,Bat批处理也支持变量的定义与调用,下面我们来看看具体实例。

1.变量的定义

描述: 在windows批处理中我们通常会使用set命令来定义或者删除变量,并使用%变量名%来引用变量(注意前后闭合)。

示例演示:

@echo off :: 变量(Variable)定义与调用 set var1=123 echo var1=%var1% set var2=456 echo var2=%var2% :: 将变量进行调用并进行算数(加减乘除)运算 set /a sum=%var1%+%var2% echo var1 + var2 = %sum% :: 删除定义的变量,在变量名后加上=则表示删除该变量 set sum= echo %sum% pause

执行结果:

var1=123 var2=456 var1 + var2 = 579 ECHO 处于关闭状态。 请按任意键继续. . .

补充知识: 除了使用 set 命令 定义变量,还可以使用 setx 命令 定义变量,其两者的不同之处在于,前者临时生效当终端关闭时则销毁,而后者则是永久生效但需要在新打开的终端中输出。

# terminal 1 setx name weiyigeek # terminal 2 echo %name%

2.环境变量

描述: 在Windows找中批处理的变量可以分为两类,由系统定义的系统变量和由用户根据需要自定义的用户变量,我们可直接在终端中执行set即可查看系统变量与用户自定义变量!

系统自定义环境变量:

COMPUTERNAME : 计算机名 USERNAME  : 当前用户名,即所登陆的账户名 HOMEDRIVE : 系统分区盘符,一般都是C盘,故而HomeDrive=C: HOMEPATH  : 用户的家目录相当于Linux中的 /home/user/,在windows中输出 \Users\WeiyiGeek PROMPT    : 自定义个性化设置cmd提示符的必备武器,类似于Linux中的PS1变量!(强大!!!) OS : 系统版本 TEMP : 临时数据存放目录 TMP : 临时数据存目录 ComSpec : 命令行 cmd.exe 完整路径名 SystemDrive : 包含系统根目录的分区,其实就是HomeDrive了 SystemRoot  : 系统根目录路径,一般都是 C:\WINDOWS WinDir      : 操作系统路径,其实就是 SystemRoot Path        : 环境变量可执行文件默认搜索路径 ProgramFiles : 就是系统的Program Files的路径啦,一般都是C:\Program Files,这就是安装软件时默认的安装路径了

常规系统自定变量:

ALLUSERSPROFILE=C:\ProgramData APPDATA=C:\Users\WeiyiGeek\AppData\Roaming ChocolateyInstall=C:\ProgramData\chocolatey ChocolateyLastPathUpdate=132182620227579881 CommonProgramFiles=C:\Program Files\Common Files CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files CommonProgramW6432=C:\Program Files\Common Files COMPUTERNAME=WEIYIGEEK ComSpec=C:\WINDOWS\system32\cmd.exe DriverData=C:\Windows\System32\Drivers\DriverData HOMEDRIVE=C: HOMEPATH=\Users\WeiyiGeek LOCALAPPDATA=C:\Users\WeiyiGeek\AppData\Local LOGONSERVER=\\WEIYIGEEK NUMBER_OF_PROCESSORS=4 OneDrive=C:\Users\WeiyiGeek\OneDrive OS=Windows_NT Path=C:\Window;C:\Windows\system32;;C:\Users\WeiyiGeek\AppData\Local\Microsoft\WindowsApps; PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW PROCESSOR_ARCHITECTURE=AMD64 PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 60 Stepping 3, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=3c03 ProgramData=C:\ProgramData ProgramFiles=C:\Program Files ProgramFiles(x86)=C:\Program Files (x86) ProgramW6432=C:\Program Files PROMPT=$P$G PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files\Intel\Wired Networking\ PUBLIC=C:\Users\Public SESSIONNAME=Console SystemDrive=C: SystemRoot=C:\WINDOWS TEMP=C:\Users\WEIYIG~1\AppData\Local\Temp TMP=C:\Users\WEIYIG~1\AppData\Local\Temp USERDOMAIN=WEIYIGEEK USERDOMAIN_ROAMINGPROFILE=WEIYIGEEK USERNAME=WeiyiGeek USERPROFILE=C:\Users\WeiyiGeek VS140COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\ windir=C:\WINDOWS

示例演示:

@echo off :: 计算机信息输出 echo 主机名称: %COMPUTERNAME% echo 主机域名: %USERDOMAIN% echo 主机域: %LOGONSERVER% echo 系统版本: %OS% echo 处理器数量: %NUMBER_OF_PROCESSORS% echo 处理器架构: %PROCESSOR_ARCHITECTURE% echo 处理器标识: %PROCESSOR_IDENTIFIER% echo 处理器等级: %PROCESSOR_LEVEL% echo 处理器修订: %PROCESSOR_REVISION% echo 用户名称: %USERNAME% echo 系统盘符: %HOMEDRIVE% pause

执行结果:

.\7.system-env-variable.bat 主机名称: WEIYIGEEK 主机域名: WEIYIGEEK 系统版本: Windows_NT 处理器数量: 4 处理器架构: AMD64 处理器标识: Intel64 Family 6 Model 60 Stepping 3, GenuineIntel 处理器等级: 6 处理器修订: 3c03 用户名称: WeiyiGeek 系统盘符: C: Press any key to continue . . .

温馨提示:

  • Temp、Tmp 变量 : 文件、程序等可使用的临时目录,默认是C:\WINDOWS\Temp或Tmp。几乎所有的程序在运行时都会在这个目录里面“临时”写入文件。一般情况下,程序写入的临时文件都应该被该程序删除,可惜的是,大部分的程序都很健忘,导致这个文件夹占据的空间越来越大,自然也就使我们的系统增肥喽。所以,我们要把它修改到其他分区,并且时时的清理里面的临时文件

  • UserProfile 变量 : 当前用户的配置目录,一般都是C:\Documents and Settings%UserName%。默认情况下,我们的桌面就是这个目录下面的“桌面”文件夹;我的文档就是这个目录下面的“My Documents”文件夹

用户自定义环境变量
描述: 编写批处理程序时,用户根据需要自己定义的变量称之为用户变量,用户变量类似于C语言里面的变量,仅仅在定义该变量的程序中有效。

例如,下面就是用户之定义的变量,以及最常操作的PATH环境变量。

# 输出与设置PATH环境变量 echo %PATH% PATH=%PATH%;%JAVA_HOME%\bin   # 定义主机系统变量 CLASSPATH=.;D:\Programs\java\jdk\lib\dt.jar;D:\Programs\java\jdk\lib\tools.jar; JAVA_HOME=D:\Programs\java\jdk JDK_HOME=D:\Programs\java\jdk MAVEN_HOME=E:\Development\apache-maven-3.6.3-bin PyCharm=D:\JetBrains\PyCharm\bin; TNS_ADMIN=F:\ChoromeDownload\instantclient_19_3 NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

如何设置永久有效的环境变量? 当然是采用前面的主人公 setx 命令。

@echo off # 运行 jdk-8u181-windows64.exe /q 即可进行静默安装即可(默认路径)  jdk-8u181-windows64.exe /q # 设置永久变量 setx /M JAVA_HOME "C:\Program Files\Java\jdk1.8.0_181" setx /M JAVA_HOME "C:\Program Files\Java\jdk1.8.0_221" # 成功: 指定的值已得到保存。 setx /M PATH "%PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\jre;" # 成功: 指定的值已得到保存。

温馨提示: 安装设置完毕后需重新打开一个cmd.exe终端进行执行验证。

3.扩展变量

描述: Windows 批处理中有许多扩展变量,此处先介绍一部分常规扩展变量,在后续的学习中作者会持续扩充。
简单示例

@echo off :: 系统扩展变量一览 echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前批处理全路径:%~f0 echo 当前盘符和路径的短文件名格式:%~sdp0 echo 当前CMD默认目录:%cd% echo 当前日期时间: %date% %time%  echo 随机字符串: %RANDOM%  echo 当前 ERRORLEVEL 数值: %ERRORLEVEL% echo 当前命令处理器扩展版本号: %CMDEXTVERSION%  echo 当前调用命令处理器的原始命令行: %CMDCMDLINE% echo 当前计算机上的最高 NUMA 节点号:%HIGHESTNUMANODENUMBER% ::目录中有空格也可以加入""避免找不到路径 echo 当前盘符:"%~d0" echo 当前盘符和路径:"%~dp0" echo 当前批处理全路径:"%~f0" echo 当前盘符和路径的短文件名格式:"%~sdp0" echo 当前CMD默认目录:"%cd%" pause

5f197d6f6640e73755eadd87a5b1dea5.png

综合示例:

@echo off :: 在当前脚本目录下重定向创建文件: set redirect=%~dp0\redirect.txt echo "This a redirect line">>%redirect%


4.交互式输入

描述: 在windows dos中也有类似于Linux系统的 read 读取变量的命令,那就是 set 命令,在前面我们学习了其定义变量,此处我们学习它另外一个特性,获取用户交互式输入。

示例演示:

@echo off :: 批处理程序交互式测试 (Batch Program interactive Test) set /p a="请输入账号:" set /p b="请输入密码:" echo /***************/ echo 你输入的账号是: %a% echo 你输入的密码是: %b% pause

执行结果:

> .\9.interactive-input.bat 请输入账号:WeiyiGeek 请输入密码:Password /***************/ 你输入的账号是: WeiyiGeek 你输入的密码是: Password

温馨提示:输入时请注意文件编码格式以及终端是否为GBK,否则有可能输出乱码。


本文链接:http://www.hqyman.cn/post/4927.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: