欢迎关注「全栈工程师修炼指南」公众号
设为「星标⭐」每天带你 基础入门 到 进阶实践 再到 放弃学习!
专注 企业运维实践、网络安全、系统运维、应用开发、物联网实战、全栈文章 等知识分享
“ 花开堪折直须折,莫待无花空折枝。 ”
作者主页:[ https://www.weiyigeek.top ]
博客:[ https://blog.weiyigeek.top ]
作者<安全开发运维>答疑交流群,回复【学习交流群】即可加入
原文地址: 运维必学 | 初识介绍-从零开始学Windows批处理(Batch)编程系列教程
文章目录:
本文为作者原创文章,为尊重作者劳动成果禁止非授权转载,若需转载请在【全栈工程师修炼指南】公众号留言,或者发送邮件到 [master@weiyigeek.top] 中我将及时回复。
0x00 前言简述
描述: 【WeiyiGeek】作者作为一名运开(万金油)学习的东西又多又杂,好处就是知识面广,缺点是多而不精,所以作者痛定思痛,把当前自己岗位职业所需的技术知识重新梳理,在帮助自己的同时又帮助各位想从事运维相关的工作职业的朋友。
作者WeiyiGeek将对Windows BAT批处理编程发布学习系列教程,BAT批处理在进行Windows服务器运维中占有举足轻重的地位,能非常方便帮助我们操作管理Windows,当然在可能有的朋友会说现在在windows Server 2019之后通常会采用PowerShell编写对应的管理脚本,还有必要学习Bat,此处作者认为还是有必要的,因为企业中还有一部分存量的业务仍然跑在Window Server 2008 乃至 2003 在此系统中的PowerShell 版本通常是 v1.0 且功能有限,更多的是采用BAT批处理所以学习Windows批处理还是有必要的,其次学习BAT批处理也能加深Windows Dos相关命令的学习,如果你还是一名网络安全人员也是必须要学习了解的。
话说得有点多了,总之就一句话如果感觉此文不错,请多多点赞、转发、在看、赞赏支持,以及关注【全栈工程师修炼指南】公众号吧。
若需一起交流学习,请关注后回复【微信交流群】即可共同学习,共同进步。
温馨提示: Window 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等高级语言一样,它适用于简单的自动化任务和批量处理操作,例如批量重命名文件、批量修改文件内容等。如果还需要实现更复杂的应用,利用外部程序是必要的,这包括系统本身提供的外部命令和第三方提供的工具或者软件。
综上所述,Windows bat 批处理脚本在系统管理和日常操作中非常有用,可以提高工作效率和简化重复性任务的执行。它也可用于创建简单的安装程序或自动化脚本,方便进行系统配置和部署。
Q: 如何学习Windows bat(批处理)?
描述: 此处作者学习DOS批处理一共分为4️⃣个部分,第一部分是批处理的专用命令,第二部分是特殊的符号与批处理,第三部分是批处理与变量,第四部分是企业中完整的BAT批处理编程案例。
好,开始进入正题吧,从入门到加薪!
0x02 批处理(Batch)基础
描述:此处我们先从下述几个批处理(Batch)命令学起,如 echo
、@
、pause
、rem
、call
、start
(小技巧:用::代替rem)以及cls
、``,它们都是批处理文件最常用的命令,通过简单的示例看一下bat脚本。
echo : 显示显示此命令后的字符串
# <!-- hello-bat.bat -->
echo. # 表示换行输出,注意点是紧接着echo的没有空格
echo off # 表示在此语句后所有运行的命令都不显示命令行本身.
(echo www.weiyigeek.top)
温馨提示: 所以为了不显示命令本身,一般都会再批处理头部加上@echo off,这样便不会显示命令本身了.
偷偷的告诉你哟?【极客全栈修炼】微信小程序已开放
可直接在微信里面直接浏览博主文章哟,后续将上线更多有趣的小工具。
@ :表示运行时不显示此行原始命令
描述: 此命令与 echo off 相似,但它是加在每个命令行的最前面,表示运行时不显示这一行的命令行(只能影响当前行)
@echo off
@echo "不会输出原始的 echo 命令"
pause : 运行此句会暂停批处理的执行
温馨提示: 运行此命令时会在屏幕上显示Press any key to continue...
的提示,等待用户按任意键后继续
示例1:未加 @ 命令 以及 echo off 指令执行bat命令
# <!--1.echo-pause.bat -->
echo "Hello world! Windows Bat."
(echo "Author: weiyigeek")
echo.
echo "Blog: blog.weiyigeek.top"
pause
示例2.使用 echo off 指令 以及 @ 命令 的bat批处理,(温馨提示脚本若有中文,可以将bat文件内容编码格式设置GBK,或者将将终端编码设置为UTF-8, 例如 chcp 65001
后续介绍)
@echo off
echo "Hello world! Windows Bat."
echo "使用 @ 与 echo off 指令。"
@pause
rem :表示此命令后的字符为解释行 (:: 也是注释)不执行相当于程序中的注释。
@echo off
echo "Hello world! rem."
echo "使用 @ 与 echo off 指令。"
rem echo 我是注释不执行1
:: echo 我是注释不执行2
== echo 我不是注释要执行
@pause
call :调用另一个批处理文件
描述: 使用call命令调用其他批处理文件,如果不用call而直接调用别的批处理文件,那么执行完那个批处理文件后将无法返回当前文件并执行当前文件的后续命令,温馨提示:同一目录可以不加路径
。
@echo off
echo "开始调用,Call 到 notepad.bat
call notepad.bat
echo "调用完毕,回到 %0.bat"
pause
start: 启动一个单独的窗口运行指定的程序或命令
描述:与call命令不同得是,它不依托于父shell的即不会阻塞
。
@echo off
echo "从这里开始start到notepad.bat"
start notepad.bat
echo "start会独立于cmd父Shell,%0.bat"
pause
goto : 跳转到指定片段
描述: GOTO 即为跳转的意思,在批处理中允许以“:XXX”来构建一个标号,然后用GOTO :标号直接来执行标号后,标号用“:字符串”来定义,标号所在行不被执行。
示例1.goto 命令跳转到指定片段处,并依次执行
@echo off
:TestG
REM "# GOTO跳转案例"
whoami && hostname
:TestT
date /t
pause
REM # 可以多次调用TestG标签后的批处理
goto TestG
温馨提示:上述示例代码脚本会产生死循环效果。
示例2.goto 命令多用在判断和分支之中,此处作为了解即可,后续我们会学习到条件判断
@echo off
if {%1}=={} goto noparms
if {%2}=={} goto noparms
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
:end
echo "程序结束!!"
pause
timeout :脚本延迟执行
描述: 此命令主要用于脚本延迟执行,其类似于PowerShell中的sleep方法以及Linux中sleep命令。
语法示例
# 语法
TIMEOUT [/T] timeout [/NOBREAK]
# 参数列表:
/T timeout 指定等候的秒数,有效范围从 -1 (表示无限期地等待按键)到 99999 秒。
/NOBREAK 忽略按键并等待指定的时间。
示例演示:
# 1.按任意键停止超时
c:\Windows\System32>timeout /T 10 & whoami
等待 0 秒,按一个键继续 ...
security\weiyigeek
# 1.按ctrl+c停止超时
c:\Windows\System32>timeout /T 5 /NOBREAK & whoami
等待 0 秒,按 CTRL+C 退出 ...
security\weiyigeek
亲,文章就要看完了,不关注一下【全栈工程师修炼指南】吗?
cls : 清理屏幕显示
描述: 此命令用于清理windows cmd
中界面显示的数据,即达到清屏的效果, 该命令使用非常简单执行cls
即可。
echo "我是将会被清理掉的字符串"
CLS
echo "我是清理屏幕后执行的"
type :显示文本文件的内容
描述:此命令用于在cmd中打开文本文件并输出内容到终端, 该命令使用也是非常的简单。
语法参数
TYPE [drive:][path]filename
示例演示:
echo "weiyigeek.top" >> weiyigeek.txt
type weiyigeek.txt
本文至此完毕,更多技术文章请访问作者博客,尽情等待下篇好文!
原文地址: https://blog.weiyigeek.top/2023/6-25-752.html
如果此篇文章对你有帮助,请你将它分享给更多的人!
学习书籍推荐 往期发布文章
回复【0008】获取【Ubuntu22.04安装与加固脚本】
回复【10001】获取【WinServer安全加固脚本】
回复【10002】获取【KylinOS银河麒麟安全加固脚本】
回复【0011】获取【k8S二进制安装部署教程】
回复【0014】获取【Nginx学习之路汇总】
回复【0015】获取【Jenkins学习之路汇总】
回复【10005】获取【adb工具刷抖音赚米】
热文推荐
欢迎长按(扫描)二维码 ,获取更多渠道哟!
欢迎关注 【全栈工程师修炼指南】(^U^)ノ~YO
添加作者微信【weiyigeeker】,拉你一起学习交流吧!
关注回复【学习交流群】即可加入【安全开发运维沟通交流群】
温馨提示: 由于作者水平有限,本章错漏缺点在所难免,希望读者批评指正,若有问题或建议请在文章末尾留下您宝贵的经验知识,或联系邮箱地址 master@weiyigeek.top 或 关注公众号 [全栈工程师修炼指南] 留言。
朋友点个【赞 + 在看】吧!
点击【"阅读原文"】获取更多有趣的知识!