1. 从零开始学 Windows 批处理编程系列之基础介绍
0x00 前言简述
描述: 【WeiyiGeek】作者作为一名运开(万金油)学习的东西又多又杂,好处就是知识面广,缺点是多而不精,所以作者痛定思痛,把当前自己岗位职业所需的技术知识重新梳理,在帮助自己的同时又帮助各位想从事运维相关的工作职业的朋友。
本系列将主要针对 Windows BAT 批处理编程进行学习,BAT 批处理在进行 Windows 服务器运维中占有举足轻重的地位,能非常方便帮助我们操作管理 Windows,当然在可能有的朋友会说现在在 windows Server 2019 之后通常会采用 PowerShell 编写对应的管理脚本,还有必要学习 Bat,此处作者认为还是有必要的,因为企业中还有一部分存量的业务仍然跑在 Window Server 2008 乃至 2003 在此系统中的 PowerShell 版本通常是 v1.0 且功能有限,更多的是采用 BAT 批处理所以学习 Windows 批处理还是有必要的,其次学习 BAT 批处理也能加深 Windows Dos 相关命令的学习,如果你还是一名网络安全人员也是必须要学习了解的。
话说得有点多了,总之就一句话如果感觉此文不错,请多多点赞、转发、在看、赞赏支持,以及关注【全栈工程师修炼指南】吧。若需一起交流学习,请关注后回复【交流群】即可共同学习,共同进步。
温馨提示: Windows Batch 批处理系列教程示例脚本可访问作者 Github 仓库中 DevelopLearnig 的项目,✈直达-> https://github.com/WeiyiGeek/DevelopLearnig/tree/main/TerminalScript/bat
0x01 什么是批处理(Batch)?
描述: 批处理(Batch)也称为批处理脚本
。顾名思义, 批处理就是对某对象进行批量的处理, 通常被认为是一种简化的脚本语言, 它应用于 DOS 和 Windows 系统。
目前 Windows 中的批处理包含两类:Windows DOS (BAT) 批处理
和 PowerShell 批处理
DOS 批处理:基于 Windows DOS 命令的,用来自动地批量地执行 DOS 命令以实现特定操作的脚本。
PowerShell 批处理 : 基于强大的.NET,是一种用于 Windows 操作系统的脚本语言和命令行工具。
此处作者暂时介绍本系列的主人公 Windows bat(批处理)
,在后续作者也将会总结推出 PowerShell 编程系列系列学习入门。
Q: 什么是 Windows bat(批处理)?Windows bat(批处理)是一种用于 Windows 操作系统的脚本语言和命令行工具,它使用扩展名为 .bat
或 .cmd 的文件
,其中包含一系列的命令和指令,用于自动化执行一组任务或操作。包括但不限于文件和文件夹的创建、复制、删除、移动,运行程序和命令,设置环境变量,修改注册表等
除此之外,Windows bat 批处理脚本使用一种简单的命令语法,可以包含条件判断 if、循环 for、变量定义 set、 跳转 goto 等基本编程功能如同 C、Basic 等高级语言一样,它适用于简单的自动化任务和批量处理操作,例如批量重命名文件、批量修改文件内容等。如果还需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。
简单的说,批处理文件是允许MS-DOS和Windows用户创建文件以快速执行长任务的程序
。
综上所述,Windows bat 批处理脚本在系统管理和日常操作中非常有用,可以提高工作效率和简化重复性任务的执行。它也可用于创建简单的安装程序或自动化脚本,方便进行系统配置和部署。
Q: 如何学习 Windows bat(批处理)?描述: 此处作者学习 DOS 批处理一共分为 4️⃣个部分,第一部分是批处理的专用命令,第二部分是特殊的符号与批处理,第三部分是批处理与变量,第四部分是企业中完整的 BAT 批处理编程案例。
好,开始进入正题吧,从入门到加薪!
0x02 批处理(Batch)基础
描述:此处我们先从下述几个批处理(Batch)命令学起,如 echo
、@
、pause
、rem
、call
、start
(小技巧:用::代替 rem)以及cls
、``,它们都是批处理文件最常用的命令,通过简单的示例看一下 bat 脚本。
温馨提示: 由于中文系统中 CMD 默认编码是 GBK 的,所以编写的脚本文件编码也要是 GBK 的,若不是可能会出现中文乱码,即使使用已经通过 CHCP 命令设置 65001,请各位看看非常注意。
echo : 显示显示此命令后的字符串
温馨提示: 所以为了不显示命令本身,一般都会再批处理头部加上@echo off
,这样便不会显示命令本身了.
@ :表示运行时不显示此行原始命令
描述: 此命令与 echo off 相似,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)
pause : 运行此句会暂停批处理的执行
温馨提示: 运行此命令时会在屏幕上显示Press any key to continue...
的提示,等待用户按任意键后继续
示例 1:未加 @ 命令 以及 echo off 指令执行 bat 命令
示例 2.使用 echo off 指令 以及 @ 命令 的 bat 批处理,(温馨提示脚本若有中文,可以将 bat 文件内容编码格式设置 GBK,或者将将终端编码设置为 UTF-8, 例如 chcp 65001
后续介绍)
rem :表示此命令后的字符为解释行 (:: 也是注释)不执行相当于程序中的注释。
call :调用另一个批处理文件
描述: 使用 call 命令调用其他批处理文件,如果不用 call 而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令,温馨提示:同一目录可以不加路径
。
start: 启动一个单独的窗口运行指定的程序或命令
描述:与 call 命令不同得是,它不依托于父 shell 的即不会阻塞
。
goto : 跳转到指定片段
描述: GOTO 即为跳转的意思,在批处理中允许以“:XXX”来构建一个标号,然后用 GOTO :标号直接来执行标号后,标号用“:字符串”来定义,标号所在行不被执行。
示例 1.goto 命令跳转到指定片段处,并依次执行
温馨提示:上述示例代码脚本会产生死循环效果。
示例 2.goto 命令多用在判断和分支之中,此处作为了解即可,后续我们会学习到条件判断
timeout :脚本延迟执行
描述: 此命令主要用于脚本延迟执行,其类似于 PowerShell 中的 sleep 方法以及 Linux 中 sleep 命令。语法示例
示例演示:
cls : 清理屏幕显示
描述: 此命令用于清理windows cmd
中界面显示的数据,即达到清屏的效果, 该命令使用非常简单执行cls
即可。
type : 显示文本文件的内容
描述:此命令用于在 cmd 中打开文本文件并输出内容到终端, 该命令使用也是非常的简单。
语法参数
示例演示:
0x03 批处理(Batch)常用命令
描述: 下面列举了在 Batch 编程中常用命令,如果有关某个命令的详细信息,请键入 HELP 命令名,或者参考作者总结的 Windows 常用命令。
批处理关于循环判断分支的命令
IF 在批处理程序中执行有条件的处理过程。
FOR 为一套文件中的每个文件运行一个指定的命令。
TITLE 设置 CMD.EXE 会话的窗口标题。
SHIFT 调整批处理文件中可替换参数的位置。
START 打开单独视窗运行指定程序或命令。
GOTO 将 Windows 命令解释程序指向批处理程序中某个带标签的行。
BREAK 设置或清除扩展式 CTRL+C 检查
REM 记录批处理文件或 CONFIG.SYS 中的注释。
PAUSE 停止批处理文件的处理并显示信息。
SETLOCAL 开始用批文件改变环境的本地化
ENDLOCAL 结束批文件中环境更改的本地化
EXIT 退出 CMD.EXE 程序(命令解释程序)
批处理常规命令
ASSOC 显示或修改文件扩展名关联
ATTRIB 显示或更改文件属性
BOOTCFG 设置 boot.ini 文件的属性以便控制启动加载
CACLS 显示或修改文件的访问控制列表(ACL)
CALL 从另一个批处理程序调用这一个
CD 显示当前目录的名称或将其更改
CHCP 显示或设置活动代码页数
CHDIR 显示当前目录的名称或将其更改
CHKDSK 检查磁盘并显示状态报告
CHKNTFS 显示或修改启动时间磁盘检查
CLS 清除屏幕
CMD 打开另一个 Windows 命令解释程序窗口
COLOR 设置默认控制台前景和背景颜色
COMP 比较两个或两套文件的内容。
COMPACT 显示或更改 NTFS 分区上文件的压缩。
CONVERT 将 FAT 卷转换成 NTFS,您不能转换当前驱动器
COPY 将至少一个文件复制到另一个位置
DATE 显示或设置日期
DEL 删除至少一个文件 == ERAS 删除一个或多个文件
DIR 显示一个目录中的文件和子目录
DISKCOMP 比较两个软盘的内容
DISKCOPY 将一个软盘的内容复制到另一个软盘
DISKPART 显示或配置磁盘分区属性
DOSKEY 编辑命令行、调用 Windows 命令并创建宏
DRIVERQUERY 显示当前设备驱动程序状态和属性
ECHO 显示消息,或将命令回显打开或关上
EVENTQUERY 显示指定准则的事件日志项目。 NO -- WIN7 无
FC 比较两个文件或两个文件集并显示它们之间的不同
FIND 在一个或多个文件中搜索一个文字字符串
FINDSTR 在多个文件中搜索字符串。
FORMAT 格式化磁盘,以便跟 Windows 使用
FSUTIL 显示或配置文件系统的属性
FTYPE 显示或修改用在文件扩展名关联的文件类型
GPRESULT 显示机器或用户的组策略信息。
GRAFTABL 启用 Windows 在图形模式显示扩展字符集。 WIN7 NO SECURITY!!!
HELP 提供 Windows 命令的帮助信息。
LABEL 创建、更改或删除磁盘的卷标。
MD 创建一个目录。
MKDIR 创建一个目录。
MODE 配置系统设备。
MORE 逐屏显示输出。
MOVE 将一个或多个文件从一个目录移动到另一个目录。
OPENFILES 显示远程用户为了文件共享而打开的文件。
PAGEFILECONFIG 显示或配置页面文件的属性。 win 7 no Command
PATH 为可执行文件显示或设置搜索路径= 就是等于 Enviroment 变量
POPD 还原由 PUSHD 保存的当前目录上一次的值。
PRINT 打印一个文本文件,打印机;
PROMPT 改变 Windows 命令提示
PUSHD 保存当前目录,然后对其进行更改
RD 删除目录 == RMDIR 删除目录
RECOVER 从损坏的磁盘中恢复可读取的信息。
REN 重新命名文件 = RENAME 重新命名文件
REPLACE 替换文件
SET 显示、设置或删除 Windows 环境变量
SC 显示或配置服务(后台处理)
SCHTASKS 安排命令和程序在一部计算机上按计划运行
SHUTDOWN 让机器在本地或远程正确关闭
SORT 将输入排序
SUBST 将驱动器号与路径关联
SYSTEMINFO 显示机器的具体的属性和配置。
TASKLIST 显示包括服务的所有当前运行的任务。
TASKKILL 终止正在运行的进程或应用程序。
TIME 显示或设置系统时间。
TREE 以图形显示启动器或路径的目录结构。
TYPE 显示文本文件的内容。
VER 显示 Windows 的版本。
VERIFY 告诉 Windows 验证文件是否正确写入磁盘。
VOL 显示磁盘卷标和序列号。
XCOPY 复制文件和目录树(包括属性)
WMIC 在交互命令外壳里显示 WMI 信息。
原文作者: WeiyiGeek
原文链接: https://mp.weixin.qq.com/s/71fzzyPhQyF53ulOQtI1Dg
本文为作者原创文章,为尊重作者劳动成果禁止非授权转载,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [master@weiyigeek.top] 中我将及时回复。
版权声明: 本文为 InfoQ 作者【全栈工程师修炼指南】的原创文章。
原文链接:【http://xie.infoq.cn/article/b47c706bd4cbf8b81adc8646b】。文章转载请联系作者。
评论