欢迎关注「全栈工程师修炼指南」公众号
设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习!
专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享
“ 花开堪折直须折,莫待无花空折枝。 ”
作者主页:[ https://www.weiyigeek.top ]
博客:[ https://blog.weiyigeek.top ]
作者<安全开发运维>答疑交流群,回复【学习交流群】即可加入
文章目录:
本文为作者原创文章,为尊重作者劳动成果禁止非授权转载,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [master@weiyigeek.top] 中我将及时回复。
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
综合示例:
@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,否则有可能输出乱码。
本文至此完毕,更多技术文章,尽情等待下篇好文!
原文地址: https://blog.weiyigeek.top/2023/6-28-754.html
如果此篇文章对你有帮助,请你将它分享给更多的人!
学习书籍推荐 往期发布文章
回复【0008】获取【Ubuntu22.04安装与加固脚本】
回复【10001】获取【WinServer安全加固脚本】
回复【10002】获取【KylinOS银河麒麟安全加固脚本】
回复【0011】获取【k8S二进制安装部署教程】
回复【0014】获取【Nginx学习之路汇总】
回复【0015】获取【Jenkins学习之路汇总】
回复【10005】获取【adb工具刷抖音赚米】
热文推荐
完整的Windows与Linux服务器系统安全加固实践和基线检测脚本(等保2.0)
【脚本分享】- Windows下利用Powershell进行MySQL数据库备份
Linux与Windows下的iSCSI网络存储共享实例操作
Windows认证原理解析基础入门
欢迎长按(扫描)二维码 ,获取更多渠道哟!
欢迎关注 【全栈工程师修炼指南】(^U^)ノ~YO
添加作者微信【weiyigeeker】,拉你一起学习交流吧!
关注回复【学习交流群】即可加入【安全开发运维沟通交流群】
温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,若有问题或建议请在文章末尾留下您宝贵的经验知识,或联系邮箱地址 master@weiyigeek.top 或 关注公众号 [全栈工程师修炼指南] 留言。
朋友点个【赞 + 在看】吧!
点击【"阅读原文"】获取更多有趣的知识!