批处理_基础知识_01

张开发
2026/4/4 19:43:45 15 分钟阅读
批处理_基础知识_01
0、前言在工作中有时候需要涉及到window系统更底层的一些东西所以需要学习一些cmd指令和dos命令来完成高效批处理任务或者自动化办公。还有想要对系统中文件管理有更细致的认识便于请理磁盘文件。后期对网络技术感兴趣可以以此作为基础继续学习。为啥linux中批处理命令和windows中批处理命令不一样两者的设计逻辑不一样Windows 命令行cmd/bat祖宗是 MS-DOS、CP/M一套古老的单任务操作系统命令。Linux Bash祖宗是 Unix、Bourne Shell一套多用户、多任务的服务器系统命令。一句话说明白bash、shell、批处理、doslinux中的bash脚本和Shell命令对应windows中的批处理脚本和Dos命令bash脚本和批处理命令都是用对应系统中的解释器执行的而非编译器bash脚本用的解释器是bash批处理脚本用的解释器是cmd.exe。批处理也好bash也好就是把dos命令、shell命令用逻辑结构控制起来因为dos是windos系统控制命令shell是linux系统控制命令。所以批处理脚本和bash脚本就可以让系统按照逻辑运行本质上控制的就是windwos系统或者linux系统自动化执行一些操作指令。1、概念区分DOSDisk Operating System磁盘操作系统是一个单用户、单任务操作系统用户通过键入命令来执行各种任务。DOS可以直接访问硬件DOS以其简单、直接的用户界面和相对较低的资源要求而闻名。常见的dos命令有dir、md、rd、cd、del、exit、cls、ipconfig、等等。CMD命令提示符Command是Windows操作系统中的命令行解释器CMD可以运行绝大部分DOS命令但它本身不是真正的DOS而是在Windows下模拟的DOS环境。一些常用命令比如dir、md、rd、cd、del、exit、cls、ipconfig、等与dos相同。但还有一些自带的命令calc打开计算器等。区别DOS是一个操作系统而CMD是Windows操作系统中的一部分用于模拟DOS环境。CMD相对于DOS具有更多的功能和扩展性提供了更多的命令和选项。cmd窗口的调节方式2、批处理基础知识在windows的批处理命令中不区分大小写。在文本模式中注释是rem 注释内容。命令模式和文本模式命令模式只能一条一条执行cmd命令文本模式如下所示就是一个简单的批处理文件通过记事本编写最后另存为后缀.bat兼容旧 DOS、还有一种后缀是.cmdWindows NT 及以后功能更强。。上面例子中涉及到了变量在批处理中变量使用方式如下不管是批处理中还是命令行中普通变量都写成%a%但是for循环中变量写法就不同了因为在批处理解释器遇到for循环会吃掉一个%所以在批处理的for循环中要多写一个%。windows批处理中有三种变量普通变量%变量名%其中也包含一些系统变量、位置参数%1 %2 %3、for 循环变量%%i运算操作符“set /a 运算式子”重定向 写入内容 写入文件这个是覆盖写入写入内容 写入文件这个是尾部添加的方式写入type 带后缀的文件名查看文件内容命令 文件从文件读入如sort a.txt批处理没有这是 Linux 语法。sort file 排序文件内容find “xxx” file 在文件里查找文字more file 分页查看文件set /p varfile 读文件第一行到变量多命令运算与||或其中||命令还可以作为门的作用||命令左边执行失败就会执行该命令右边的命令否则不执行右边的命令。管道命令管道命令就是挨个执行你写的命令写法如下命令1 | 命令2例如dir | find “.txt”这条命令就是查找当前目录下所有txt后缀的文件。批处理文件创建方式创建批处理文件方式1copy con命令copy复制命令con代表 console控制台 / 键盘输入是系统保留设备名该命令表示把从键盘输入的内容复制到指定文件中相当于快速创建 / 覆盖文本文件。写法copy con 文件名.后缀输入命令后按回车光标会跳到下一行进入输入模式。逐行输入你要写入文件的内容支持换行。输入完成后按 Ctrl Z会显示 ^Z再按回车结束输入并保存。创建批处理文件方式2echo 内容 文件名.后缀也能起到创建文件的作用但是copy con可以创建多行输入的文件。创建批处理文件方式3在cmd中输入notepad这种方式另存为的时候选择ANSI编码方式防止乱码。通配符*表示任意多个字符包括零字符表示任意单字符但只能有一个n个表示最多有n个n个以下都匹配。3、批处理基本命令3.1、基础命令编码保存为ANSI或UTF-8 无 BOM否则中文乱码。系统操作需右键 “以管理员身份运行”。路径空格所有路径加双引号“C:\Program Files”。echo off关闭命令回显脚本开头必加否则会打印每一行命令。echo输出文本echo.输出空行。来看看echo的真实面目运行之后结果可以关闭之后的命令回显所以echo off就是一开始关闭回显同时关闭本行回显。pause暂停按任意键继续防止窗口一闪而过。调试开头用echo on末尾加pause看执行过程。cd /d跨盘符切换目录cd /d D:\test。命令格式【命令 子命令 参数 操作】注意可以通过命令帮助信息查看命令帮助信息/比如我想知道net命令当中有哪些子命令发现有user然后我想知道user有哪些子命令发现有password就可以一层一层去获取子命令如下批处理文件参数传递在文件中可以通过数字表示参数如下所示需要注意写在批处理文件中参数的序号就是变量的序号。批处理的注释rem 注释内容 remark是备注的意思还有一种是两个英文冒号但两个冒号的格式在作用域中没法使用。清理代码屏幕cls。命令提示符设置代码color设置cmd命令提示窗口的前景色和背景色title设置cmd命令提示窗口的标题。时间相关的命令date /T显示具体日期信息time /T显示具体时间信息。启动命令start启动对应路径的文件。调用其他批处理文件call 其他带后缀的批处理文件 参数~。查看任务列表tasklist 该命令加上ip用户名和用户密码就能查看远程系统运行的任务。关闭任务命令taskkill该命令可以关闭掉你想要关闭的程序进程。文件结构命令tree把当前文件夹当中的内容以树状形式进行展示相对于dirtree命令通过设置可以更清楚的看到对应路径下都有哪些文件以及这些文件内部都有哪些文件。关机命令shutdow /i 执行远程主机的关机操作shutdown -p 是强制关机的命令。★计划任务执行schtasks 通过该命令可以设置一个每天都运行的任务计划还可以查看自己电脑运行计划从中可以查看有没有恶意程序。3.2、其他重要命令set命令和setlocal命令下面变量里面有解释shift命令下面位置变量中有具体解释3.3、文件夹和文件相关命令3.3.1、文件夹操作目录操作看dir建文件夹md删文件夹rd /s /q3.3.2、文件操作建文件type nul 复制copy移动 / 改名move删除文件del判断存在if exist3.4、用户、网络操作命令查看用户net user还可以添加或者删除用户通过这条命令还可以查看对应用户的权限和分组用户分组命令net localgroup 分组名称 修改计算机上面的分组以此提高或者降低用户权限网络操作命令ping 网址网络连通性检测命令网络连接命令telnet 网址在使用这个命令之前需要检查你的windows功能是否开启了这项服务如下退出telnet的方法是输入quit网络路由信息tracert 网址可以追踪到本地地址到目标地址经过的一些地址信息网络适配器命令ipconfig查看网络地址适配信息IP地址到物理地址查询命令arpARPAddress Resolution Protocol地址解析协议是一个重要的网络协议它用于将网络层的IP地址转换为数据链路层的物理地址MAC地址arp命令可以帮助用户显示、添加、修改或删除ARP缓存中的条目这些条目存储了IP地址与MAC地址之间的映射关系‌。4、批处理当中的变量4.1、批处理命令的位置变量最多有9个从1到9注意%0表示脚本自己shift命令的作用执行一次shift命令就会吃掉%1位置参数具体示例如下4.2、普通变量环境变量%temp%就是一种特殊的环境变量查看系统缓存。在windows中环境变量就是设置好的简单缩写或内容用于代替复杂的文件路径。环境变量有两种一种是系统环境变量一种是用户环境变量普通变量用户变量仅对特定用户有效不影响其他用户而系统变量在整个操作系统范围内可用影响所有用户和系统中的所有进程‌。在cmd的命令提示窗口通过set命令查看下面就是一般批处理命令的书当中对set命令的解释这种写法中中括号当中的就是可选项可选可不选至于能否多选就看命令设计了。推荐写法set “var值”通过set看环境变量setlocal命令默认情况下你在批处理里写set a100这个变量 a 会留在 cmd 环境里关闭批处理窗口还在。按照下面写法setlocalseta100endlocal脚本运行期间 a100脚本结束 / endlocal 后变量 a 自动消失系统环境完全恢复原样。这就叫局部化不会乱改系统环境。最常用的功能就是开启延迟变量扩展重中之重允许在 for 循环、if 括号内 实时读取变量最新值echo off rem setlocal enabledelayedexpansionsetnum0for%%iin(123)do(set/anum1echo!num!)rem endlocal关于上述情况的解释批处理在执行 if ( ) 或 for ( ) 这种带括号的代码块时会先把整个括号里的内容进行一次预处理先替换后展开把所有变量的替换成当时的值再开始执行循环。所以循环里你明明改了变量它却永远不变。而setlocal enabledelayedexpansion意思就是允许!变量名!来表示延迟变量看下面程序的打印结果echo offsetnum0for%%iin(123)do(set/anum1echo%num%)批处理是这样干的读到 for %%i in (1 2 3) do ( 时把整个括号里的内容一次性全部预处理把 %num% 替换成进入循环前的值 0循环真正执行时代码已经变成set/anum1echo0set/anum1echo0set/anum1echo0!var!表示运行时才替换每次循环都重新读最新值setlocal enabledelayedexpansion它开启了延迟变量扩展允许你用!变量名!这种写法。注意延迟变量只对普通变量有用对位置变量和for循环中的计数变量没用for循环中的计数变量每次运行都会更新因为它是for循环自带的由 cmd 解释器内部维护。但是位置变量就没法用for循环更新了如果位置变量要更新使用就要用goto来模拟for循环。4.3、for循环中的计数变量%%a可以理解为局域变量普通变量和位置变量就是全局变量。for循环变量在批处理文件中需要用双百分号而在命令行中则是单百分号。位置参数的作用域是整个脚本而for循环变量仅限于循环体内。此外位置参数是只读的而循环变量可以在循环内修改。4.4、总结普通变量定义不加 %使用加 %for 循环变量定义必须加 %%使用也必须加 %%循环内修改普通变量使用时必须用 !变量名!不能用 %变量名%5、windows中批处理命令的程序结构种类5.0、批处理中如何添加变量不论判断还是循环要想让它牛逼起来还得有变量的加持所以首先先了解用set如何加变量。赋值规则set var值等号两侧不能有空格set var 123会出错。延迟扩展循环 / 代码块内变量需用setlocal enabledelayedexpansion !var!否则变量值不会实时更新。set /a 只能对整数进行计算如果表达式中包含小数小数部分会被忽略。运算结果必须在 -231 到 231-1 的范围内否则会被当作字符串处理。5.1、顺序结构echo offecho第一步echo第二步 pause5.2、条件结构批处理里没有直接的 else if 关键字多分支写法如下注意条件前后都有空格echo offif条件1(命令1)else(if条件2(命令2)else(命令3))5.3、循环结构for中变量是专属的局域变量特殊写法要记住和普通变量以及位置变量做区分echo offfor%%iin(列表)do(命令)5.4、goto结构echo offecho开始 goto nextecho这句话不会显示 :nextecho跳到这里了 pause5.5、子程序结构和goto的区别就是call跳过去执行完自动回到 call 下一行继续执行像函数调用只要碰到 goto :eof意思是End Of File表明子程序的末尾表明子程序调用结束。还有一处不同就是调用位置标签前是否有冒号由于eof是系统标签所以goto调用时候就要加冒号。下面是callecho off call :func pauseexit:funcecho这是子函数 goto :eofecho这是不算子函数5.6、选择结构/c全称choice 选项 作用定义用户可以按哪些键/m全称message 提示消息作用后面跟你要显示的提示文字%errorlevel% 是系统固定的结果变量不只用于 choice几乎所有命令执行后都会给它赋值。对于普通程序赋值如果是非0表示执行出错了如果是0执行就是成功。对于choice执行结果执行之后系统会根据你按下的是可选按键里的第几个把对应的编号1、2、3…存入 errorlevel。echo off choice /c abc /m请选择a.查看 b.备份 c.退出if%errorlevel%1echo查看if%errorlevel%2echo备份if%errorlevel%3echo退出 pause6、cmd批处理应用案例6.1、计划执行案例让电脑在每次启动后设定的某个时间关机前置知识学习schtasks命令这个命令常用来定时关机、重启比如每天 / 每周定时打开软件定时备份、定时执行脚本后台自动运行程序等。代码echo off schtasks /delete /tn定时关机/f2nul schtasks /create /tn定时关机/trshutdown /s /f/sc once /st %1:%2echo计划任务已创建计算机将动关机 pausenul碎片知识1如何以管理员权限运行cmd指令碎片知识2接口问题http是通过电脑的80接口访问的https是通过电脑的443接口访问的。碎片知识3IP地址、子网掩码、网关、DNSIP地址就像现实中的地址可以标识网络当中的一个节点网络上传输的数据就是通过ip地址来寻找目的地的。ip地址分为5类A类是从1.0.0.0到126.255.255.255这一类是大型网络每个网络能容纳约1677万个主机1个字节网络地址3个字节主机地址B类从128.0.0.0到191.255.255.255这一类是中型网络每个网络容纳6万台主机2个字节网络地址2个字节主机地址C类从192.0.0.0到223.255.255.255这一类是小型网络每个网络容纳254台主机3个字节网络地址1个字节主机地址D类从224.0.0.0到239.255.255.255多点广播一次寻址一组计算机E类从240.0.0.0到255.255.255.255保留地址用于研究或未来使用。上图中表示里面前面部分是网络位和主机位在一起的状态斜杠后的数字就表明网络位长度比如第一行中斜杠后是8表明网络位长度是8位1个字节主机位长度就看掩码中有几个0有1个0表示有1个主机位以此类推。网段一个网络号所定义的网络范围说白了就是指在计算机网络中由一组具有相同网络前缀的IP地址组成的地址范围‌‌。例如“192.168.1.0/24”表示从192.168.1.0到192.168.1.255的IP地址范围‌。可用地址的计算2的n次方-2其中n就是主机位后面减去的2表示网络地址和广播地址这两个不可用地址。网关网关是两个网络之间的门或协议转换的硬件设备它可以是多种设备只要这些设备能够实现网络之间的通信转换和流量控制。网关设备通常包含处理器、内存、存储设备、网络接口卡等硬件组件这些组件共同协作以实现网关的功能‌。一般来说路由器、服务器、防火墙都可以作为网关。同网段之间可以很方便的访问比如192.168.1.0/24中从192.168.1.1到192.168.1.254的IP地址范围‌。不同网段之间的访问192.168.10.1访问192.168.20.1不同网段的划分需要用到“网关”也叫做gateway、网间连接器、协议转换器。局域网家内的电脑家里的房间通信是不需要网关家的大门的。路由器的网关也被称为默认IP地址一般默认为192.168.0.1或192.168.1.1光猫或路由器可以帮助用户架设本地局域网 同时还肩负着为本地局域网内的联网设备分配IP地址的作用而网关就是帮助这些拥有IP地址的设备连接网络的。DNS域名解析系统domain name system是互联网的一项服务它作为将域名和IP地址相互映射的一个分布式数据库能够让人更方便的访问互联网。比如把www.baidu.com翻译成了对应访问主机的ip地址目的就是便于你记住一些复杂的网址所以我们平时看到的www~其实就是域名。

更多文章