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

news2024/9/25 3:29:01

欢迎关注「全栈工程师修炼指南」公众号

设为星标⭐每天带你 基础入门 到 进阶实践 再到 放弃学习

专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享

  花开堪折直须折,莫待无花空折枝 


作者主页:[ https://www.weiyigeek.top ]  

博客:[ https://blog.weiyigeek.top ]

作者<安全开发运维>答疑交流群,回复【学习交流群】即可加入


文章目录:

2d1611c962a13db18a65fda27a24a8ac.png

本文为作者原创文章,为尊重作者劳动成果禁止非授权转载,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [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

5f197d6f6640e73755eadd87a5b1dea5.png

综合示例:

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

亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?

4bffdf2bf6f66364dd2ec2d6d670ec6d.jpeg

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

如果此篇文章对你有帮助,请你将它分享给更多的人! 

00cf1bcab27a9bb85fbd5f8da5e486e1.gif

d683d0a259126c0de6f4725dfd92a3b3.png 学习书籍推荐 往期发布文章 a54e9edd8b0985827ce7fe15aab7eb28.png

回复【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认证原理解析基础入门

欢迎长按(扫描)二维码 取更多渠道哟!

60e57b2a513e16c89c7397a2b3edad05.gif

欢迎关注 【全栈工程师修炼指南】(^U^)ノ~YO

添加作者微信【weiyigeeker】,拉你一起学习交流吧!

关注回复【学习交流群】即可加入【安全开发运维沟通交流群

温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,若有问题或建议请在文章末尾留下您宝贵的经验知识,或联系邮箱地址 master@weiyigeek.top 或 关注公众号 [全栈工程师修炼指南] 留言。

朋友点个【赞 + 在看】吧!

点击【"阅读原文"】获取更多有趣的知识!   

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/712949.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue中如何封装一个基础组件---demo

在 Vue 中封装基础组件可以提高代码的可复用性和维护性&#xff0c;使开发过程更高效。下面是封装基础组件的一般步骤&#xff1a; 确定组件功能&#xff1a;首先确定要封装的基础组件的功能和用途。基础组件通常是具有单一功能的&#xff0c;可以在不同的项目中多次使用的组件…

【C++初阶】C++入门——缺省参数、函数重载

目录 一、缺省参数1.1 定义1.2 缺省参数分类1.3 缺省参数只能出现在函数声明中 二、函数重载2.1 定义2.2 构成重载的几种情况2.3 C支持函数重载的原理 一、缺省参数 1.1 定义 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实…

下一代Windows被披露,任何硬件都能运行

这么些年来&#xff0c;微软似乎一直没能打破 Windows 系统隔代香魔咒。 继 Win XP 惊艳世界后 Win Vista 表现平平&#xff0c;到 Win 7 引领一个时代&#xff1b; 接着 Win 8 含泪淹没在前代耀眼光环之下&#xff0c;直到 Win 10 再创辉煌成功走入家家户户。 而最新的 Win …

vue-antd-admin——关闭当前页面,跳转到指定页面——bus事件总线的用法

最近在写后台管理系统时&#xff0c;遇到一个需求&#xff1a; 关闭当前页面&#xff0c;然后跳转到指定页面。 具体实现方法如下&#xff1a; 1.tabsView.vue文件中添加bus文件&#xff0c;并实现跨组件之间的监听 1.1 引入bus文件 import Bus from /utils/bus; bus文件内…

C#winform自定义圆角按钮控件

本篇介绍自定义圆角渐变按钮,实现过程,实现效果如下 创建winform项目,添加组件类控件 修改的名称为ButtonEx,并点击添加 修改cs中的代码 using System; using System.ComponentModel;using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms;…

HKDF秘钥生成算法

HKDF叫HMAC-based KDF(key derivation function)&#xff0c;基于HMAC的密钥推导函数&#xff0c;所以我们先认识HMAC算法。 1. HMAC 基于一个共同密钥&#xff0c;在两个对端之间提供消息完整性确认的机制叫"message authentication codes(MAC)&#xff0c;消息认证码&…

【CSS】CSS使用变量与变量定义

如何定义可以在CSS中使用的变量 CSS变量&#xff08;也称为自定义属性&#xff09;的定义规则如下&#xff1a; 使用–作为前缀&#xff0c;后跟变量名。变量名可以由字母、数字、连字符和下划线组成&#xff0c;并且不能以连字符开头。变量名区分大小写。变量定义在选择器范…

数据中心可视化——智慧机房数字孪生,高效运维管理

IDC&#xff08;Internet Data Center&#xff09;数据中心可视化是指通过可视化的方式对数据中心的运行状态、资源使用情况、安全监控等进行展示和管理。可以帮助管理员更好地了解数据中心的运行情况和趋势&#xff0c;及时发现问题并采取措施&#xff0c;提高数据中心的运行效…

鼠标悬停,用气泡形式提示用户信息

需求 鼠标悬停,用气泡形式提示用户名字信息 效果图 分析 图中深浅两色的小方块是由v-if遍历二维数组得来的,所以这个需求本质上是原生html元素的出现与隐藏,重点在于知道显示或隐藏哪一个元素 代码 <!-- shelvesList就是后台给前端的,关于库位信息的二维数组 --> &l…

用RunnerGo平替JMeter?这个测试平台确实可以!

1、前言 目前在性能测试领域市场jmeter占有率非常高&#xff0c;主要原因是相对比其他性能测试工具使用更简单&#xff08;开源、易扩展&#xff09;&#xff0c;功能更强大&#xff08;满足多种协议的接口&#xff09;&#xff0c;但是随着研发协同的升级&#xff0c;平台化…

java版本企业电子招标采购系统源码+二次开+Spring Cloud + Spring Boot 发

一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编辑&#x…

耳骨传导耳机哪个牌子好,几款实战性高的耳骨传导耳机分享

骨传导耳机是一种利用骨头直接传声的耳机&#xff0c;因为它不需要通过耳道来听音乐&#xff0c;所以能够更好地保护听力&#xff0c;也不会因为佩戴耳机而影响到我们正常的交流&#xff0c;可以说是一种比较健康的耳机。不过骨传导耳机的价格相对于普通蓝牙耳机来说还是要贵一…

二叉树题目:相同的树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;相同的树 出处&#xff1a;100. 相同的树 难度 3 级 题目描述 要求 给你两个二叉树的根结点 p \texttt{p} p …

振动在线监测:如何优化您的设备维护计划?

在工业生产中&#xff0c;设备的维护计划对于确保设备可靠性和生产效率至关重要。而振动在线监测作为一种先进的技术手段&#xff0c;可以实时监测设备振动情况&#xff0c;帮助企业优化维护计划&#xff0c;提高设备维护效率。本文将介绍振动在线监测的重要性&#xff0c;并分…

SparkSQL的分布式执行引擎(Spark ThriftServer)

文章目录 1.Spark ThriftServer2.启动 Spark ThriftServer3.Beeline方式连接4.DataGrip方式连接5. 代码方式6. SparkSQL运行方式7.参考文章 1.Spark ThriftServer Spark ThriftServer 相当于一个持续性的Spark on Hive集成模式&#xff0c;可以启动并监听在10000端口&#xff…

182_Power BI 使用 DAX 按照先进先出原则计算毛利润

182_Power BI 使用 DAX 按照先进先出原则计算毛利润 一、背景 在笔者以往的文章中也有先进先出的案例&#xff0c;可以参考(https://jiaopengzi.com/?s%E5%85%88%E8%BF%9B%E5%85%88%E5%87%BA)。 今天我们来看一个网友提出的问题&#xff0c; 先进先出的原则&#xff0c;入…

ATM模拟机-实战开发-前期准备

需求分析 项目名称&#xff1a;ATM模拟存取钱系统 目录 需求分析 项目名称&#xff1a;ATM模拟存取钱系统 项目目标功能分析&#xff1a; 用户功能&#xff1a; 提供功能 基本功能 管理员功能&#xff1a; 提供功能 基本功能 详细分析 用户功能 管理员功能 用户…

ModaHub大禹智库:ModelScope魔搭社区的“下载数据严重造假“的说法可能存在一定的合理性

目录 首先&#xff0c;我们需要了解ModelScope魔搭社区的运营模式和数据收集方式。 其次&#xff0c;我们需要考虑ModelScope魔搭社区的用户群体和应用场景。 此外&#xff0c;我们还需要考虑ModelScope魔搭社区的发展时间和市场竞争情况。 综上所述&#xff0c;ModelScope…

PHP反序列化漏洞之Phar

目录 1、认识phar类型文件 2、制作phar文件 3、phar的上传与读取 4、漏洞利用的条件 1、认识phar类型文件 这种文件可以通过phar协议来读取&#xff08;使用phar://后面接文件路径即可读取&#xff09; 先给大家看一下phar文件的大致样子&#xff1a; 它一般包括头部信息&…

Windows10下使用wsl2+ubuntu1804

一定好好看官方文档 适用于 Linux 的 Windows 子系统文档 | Microsoft Learn 一、安装WSL 1.1、方式一&#xff1a; 现在&#xff0c;可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell 或 Windows 命令提示符&#xff0c;方法是右键单击并选择…