IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Windows下的批处理文件.bat/.cmd简介及常用命令 -> 正文阅读

[系统运维]Windows下的批处理文件.bat/.cmd简介及常用命令

写在前面:
提起批处理,或者 .bat/.cmd 为后缀名的文件,大家可能都见过,也许会比较陌生,这并不是一种新的编程语言或者一种很前沿的技术,在早期的windows系统下的计算机,其实只有一个黑框框 — DOS窗口,就像下面的一样,当时还没有鼠标。所以只能用键盘来进行输入,就是在这个DOS窗口输入命令,来与计算机进行交互。
在这里插入图片描述

批处理文件简介:

1.所谓的处理文件其实就是以.bat/.cmd为后缀的文本文件,是可以拿文本编辑器进行打开的,这个文件的每一行都是一条DOS命令,因此其可以依次处理多条DOS命令,其效果和在DOS下依次执行各条命令相同发,这也是其名字批处理的由来。批处理文件一般使用文本编辑工具就可以编写。
2.处理文件可以双击执行也可以在DOS窗口下输入批处理文件的名称,其本质还是系统调用Cmd.exe来运行该文件。
3.批处理文件是一种简单的程序,并没有很严格的编程规范。
4. .cmd文件可以使用的命令比.bat多,但是.cmd文件只可以在windows2000以后使用。
5.批处理文件是不区分大小写命令的,shell脚本则不然。
6.批处理文件可以放在任意的路径下运行。

一、写出第一个属于自己的批处理文件

1.1 新建一个文本文档

在这里插入图片描述

1.2 编辑并保存

在这里插入图片描述

1.3 修改文件后缀名为.bat/.cmd (当然先修改文件名再编辑也是可以的,并无先后顺序之分)

在这里插入图片描述

1.4 双击运行(或者在命令窗口输入文件名运行)

1.4.1 双击运行效果:

在这里插入图片描述
可以看到,咱们的 helloworld 也是成功的打印出来了,当然咱们也翻车了,不要慌,咱们看看这种问题怎么解决

1.4.2 解决编码问题
  1. 只需要在notepad++将其转为ANSI编码即可
    在这里插入图片描述

  2. 或者在使用文本文档保存时选择编码为ANSI即可:
    在这里插入图片描述
    在这里插入图片描述
    可以看到已经显示正常了,至于为什么要设置为ANSI编码格式,可以看看我们DOS窗口其原本的编码格式:
    打开DOS窗口快捷键:Windows + R
    在这里插入图片描述
    在这里插入图片描述

每天学会一个小技巧:当你想复制这个DOS窗口里的内容,却发现 CTRL + C 窗口就退出关闭了,这时候可以在空白处 :全选 --> 右键 – > 编辑 --> 复制
在这里插入图片描述

在这里插入图片描述
可以看到这个DOS窗口的编码格式是ANSI
这里的 936 是微软为中国区设置的编码格式,当然,我们也可以对编码格式进行修改
修改命令如下:

chcp 编码格式代码

常见编码格式代码

代码编码格式
950繁体中文
65001UTF-8
936简体中文默认的GBK
437MS-DOS 美国英语
1253希腊语
1258越南语
1256阿拉伯语

注意:这种只是临时的进行修改当前文件的编码格式,当这个DOS窗口关闭后又将恢复到原来的编码格式。

1.4.3 DOS窗口下输入 批处理文件名 运行效果

在这里插入图片描述
可以看到两者的运行效果是一样的,不过大家要注意路径的问题
例如:批处理文件在D盘,而DOS窗口的当前路径是在C盘下,那这样会存在找不到文件的情况 因此大家可以写上批处理文件的完整路径,不过感觉这样好麻烦,还不如我咔咔双击一下呢。

二、常见的批处理命令

2.1 echo 显示消息;打开回显或者关闭回显功能

一般用于打印一些日志或说明,将结果或者批处理过程中的异常或者错误打印出来便于分析
echo [message]
示例:

echo helloworld  
::打印helloworld

效果:
在这里插入图片描述

echo [on/off] 打开或关闭回显功能
示例:

echo off
echo helloworld
rem echo [message] 在DOS窗口打印message 就像我们C++ 里的 cout<<"helloworld"<<endl;
rem rem 这个命令是注释的意思,方便DOS命令的可读性,当然也可以用"::" 来替代
::第一个例子肯定是helloworld啦!
pause
::pause 命令是为了让那个DOS黑框框可以停下来,不然他一闪而过,啥也看不清

运行效果:
在这里插入图片描述

echo on
echo helloworld
rem echo [message] 在DOS窗口打印message 就像我们C++ 里的 cout<<"helloworld"<<endl;
rem rem 这个命令是注释的意思,方便DOS命令的可读性,当然也可以用"::" 来替代
::第一个例子肯定是helloworld啦!
pause
::pause 命令是为了让那个DOS黑框框可以停下来,不然他一闪而过,啥也看不清

运行效果:
在这里插入图片描述
可以看到on / off 这个参数就是是否显示 DOS命令的一个作用。

2.2 @ 表示不显示后面的命令

@ 与 echo off 相似,但是其只能不显示后面的这一行命令,作用域之后这一行
示例:

@echo off
echo helloworld
rem echo [message] 在DOS窗口打印message 就像我们C++ 里的 cout<<"helloworld"<<endl;
rem rem 这个命令是注释的意思,方便DOS命令的可读性,当然也可以用"::" 来替代
::第一个例子肯定是helloworld啦!
pause
::pause 命令是为了让那个DOS黑框框可以停下来,不然他一闪而过,啥也看不清

运行结果:
在这里插入图片描述

2.3 rem 相当于注释作用

也可以使用 " :: " 双冒号,表示注释,同样作用域也只是这一行,同理这一样是不被执行的,和代码规范一样,加上合理的注释可以让你的代码或者语句更加的有可读性。
示例:

rem echo [message] 在DOS窗口打印message 就像我们C++ 里的 cout<<"helloworld"<<endl;
rem rem 这个命令是注释的意思,方便DOS命令的可读性,当然也可以用"::" 来替代

2.4 pause 暂停

有时候我们需要看到批处理文件的一些信息,但是打印出来之后机会一闪而过,什么也看不到,因此可以在需要暂停的地方使用 pause 命令,使其停下来。停下来之后按任意键就可以继续执行。
示例:

@echo helloworld
pause

2.5 ren 重命名文件

ren first.txt first.bat  ::将first文件重命名为first.bat

2.6 if 判断

和咱们的编程语言,用于判断条件是否成立,成立则执行相应的程序
除了 常见的
2.6.1 if else

if 条件(成立时执行的命令) else (不成立时执行的命令)
::执行的语句建议都写在 "()" 里。 

注:如果else 要换行需要在 if 语句的末尾使用 " ^ " 符号将语句进行连接,否则会报错
例如:

if 条件一 (执行的语句)^
else (执行的语句)

2.6.2 if [ not] exist XXX 表示 如果存在XXX的意思 一般用来判断文件是否存在
例如:
first.bat :

@echo off
if exist second.bat (second.bat) else (echo "the file not exist")
::当存在second.bat 时就执行这个批处理文件 否则打印"the file not exist"
pause

文件不存在时:
在这里插入图片描述
当文件存在时:
second.bat :

@echo off
echo "I am second.bat"
pause

在这里插入图片描述
注:这里如果两个文件在相同目录下不用写路径,但是如果不在同一目录下,需要写上文件的绝对路径,否则会出现错误。

2.6.3 if not exist 如果不存在 …
DOS命令里并没有 != 这种写法,但是提供了 not 关键词,也是条件取反的意思。

2.6.4 if errorlevel number 如果返回数字为 number …
一般DOS程序会在执行结束后返回一个数字来代表程序运行的结果,称为错误码 errorlevel 或者返回码,有点返回值那味了是不
常见的返回码为 : 0 1。这样就可以根据返回值来进行判断下一步要执行的指令了。

示例:

@echo off
xcopy second.bat D:
::xcopy [xxx路径下的文件] [拷贝的目标目录]
::call [文件路径] [filename] 调用另一个批处理文件,但是当前的怕批处理文件并不会结束
if errorlevel 1 (echo 拷贝失败) else if errorlevel 0 (echo 拷贝成功)
pause

运行结果:
在这里插入图片描述
2.7 call 调用另一个批处理文件或可执行程序,并不终止原来的文件,虽然说不使用call 也可以调用别的批处理文件,但是这样调用的批处理文件执行结束后不会回到原来的批处理文件
注意:不要调用自身可能会陷入死循环。
示例:
fisrt.bat :

@echo off
if exist second.bat (call second.bat)^
else echo 文件不存在
::call [文件路径] [filename] [parameters]调用另一个批处理文件,但是当前的怕批处理文件并不会结束
::并且在调用批处理文件时可以传入参数
echo second.bat 已经执行完毕
pause

second.bat :

@echo off
echo "I am second.bat"
pause

运行结果:
在这里插入图片描述
2.8 goto label: 跳转到指定标签行,然后从" : label " 的下一行开始处理命令 ,goto 语句经常和 if 连起来用
label 的名字可以随意取,goto 是根据 " : " 找到该标签的,不要忘记了 冒号。
示例:

@echo off
if exist second.bat (goto case1)
:case2
echo i am case2
:case1
echo i am case1
call second.bat
pause

运行结果:
在这里插入图片描述
2.9 start: 调用外部程序
例如我这里写了一个 VBS 程序
打开它.vbs :

con =MsgBox ("你说打工人是不是人上人?",vbYesNo + vbInformation)
if con  = vbyes then
msgbox "人上人YYDS"
end if
if con=vbNo then
msgbox "不是也得是!"
end if

批处理文件:
first.bat

@echo off
start 打开它.vbs
pause

运行结果:
在这里插入图片描述
选择是:
在这里插入图片描述
选择否:
在这里插入图片描述
这样的功能 call 命令也可以做到,但是这两者又有什么不同呢?

1.call 命令主要来进行批处理的内部调用,当然也可以调用可执行程序,而start 不能进行内部调用,但是其可以执行几乎所有的外部程序。
2.call 是在当前窗体进行调用一个子进程,变量可以互通,但是start 调用外部程序是相当于是新开一个进程。
3.call 可以将参数传入子进程,子进程也可以将值返回,但是start 只能进行传参,但是不能返回参数或者变量

批处理相关的命令秩序更新中…

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:34:54  更:2021-08-30 12:36:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:05:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码