Windows批处理命令—入门

[toc]

0、资料

1. 解决 cmd 中文乱码

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

cmd中输入:chcp 65001 将 编码改为 UTF-8
在这里插入图片描述

若以上方法无效,则:

bat文件右键用“ 编辑” 打开,
另存为时,UTF-8保存为ANSI 格式。即可解决运行是乱码问题

2. 批处理文件

批处理文件 就是 将多条DOS命令放在一个.bat 文件中,运行时,依次执行文件中编写的 DOS命令
在这里插入图片描述

3. 切换目录

cd【即:change directory 更改当前目录】

  • 进入驱动器,如:d:
  • 进入文件夹,如:cd d:\abc\Test.txt

cls:清屏
set :查看环境变量

4. 获取当前 批处理文件 所在的目录

“d” : Drive的缩写,即为驱动器
“p”: Path缩写,即为路径,目录
cd %~dp0 :进入批处理所在目录
cd %~dp0bin\ :进入批处理所在目录的bin目录

1
2
3
4
title 批处理演示
:: 你当前的位置是 %time%
echo 你当前的位置是:%~dp0
pause

命令解析:

  • :: 表示后面内容为批处理文件中注释,相当于命令rem
  • echo : 命令是什么,就在控制台打印什么
  • pause: 中断批处理文件,并等待用户输入任意字符
  • title:设置当前cmd 窗口的标题
  • %time%:获取当前的时间

%cd%%~dp的区别:

  1. 当 批处理文件中 没有调用 另外的文件夹中的批处理文件时,两者取出的值一样
  2. 如果有调用别的目录下的批处理文件,则 %cd%仍然是当前批处理文件的目录,但%~dp0变为被调用的批处理文件所在的目录

小结:

  1. %~dp0:当前正在执行的批处理文件所在的目录
  2. %cd%: 当前主文件的目录,一般不变

示例:

1
2
3
4
5
echo   你当前的位置是:%~dp0
pause

echo 你当前的工作目录是:%cd%
pause

5. 杀进程:

1
2
3
taskkill -f /im notepad.exe
echo 杀死记事本进程
pause

在这里插入图片描述

6. 获取帮助

例如:taskkill /?
在这里插入图片描述

7. 常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//查看系统版本的命令的语法【/?】
ver /?

//启动1个cmd实例
cmd /?

//查看环境变量
set /?

//注释,相当于::
rem /?

//条件判断
if /?

//echo后是什么就打印什么
echo /?

//跳转,可与:标签名 结合形成循环
goto /?

//循环
for /?

//更改批处理文件中可替换参数的位置
shift /?

//调用别的批处理文件
call /?

//显示文本内容
type /?

//查找,find "要找的字符串" 文件名
find /?

//查找,find "要找的字符串" 文件名
findstr /?

//将文件复制到另外的位置,copy src dis
copy /?

8. 运行的时候 传参

例如:

1
2
//在批处理文件 a.bat中输入下列内容
call b.bat "hello" "haha"

命令解释:

  • 批处理文件的参数最多10个【0~9】
  • 参数0 表示本身,如上面代码中:call b.bat "hello"表示调用b.bat文件,并将”hello“ 作为参数传给b.bat文件。在b.bat文件内,执行echo %0表示打印当前文件名,执行echo %表示打印传入的第一个参数【即:”hello“】

9. echo

语法:

  1. echo on/off : 打开或关闭提示【不显示输入的过程,只显示执行结果】

在这里插入图片描述
在这里插入图片描述

10. @符号

@与echo off 相似,用于隐藏 带@的命令的输入
在这里插入图片描述
在这里插入图片描述

在回显的同时将内容覆盖输入文件

1
echo hello  > d:\Test.txt

在回显的同时将内容追加输入文件

1
echo hello  >> d:\Test.txt

11. goto

实例:

1
2
3
4
5
6
set a=0

:label_1
if a == 0
(echo "hello")
else(goto label_1)

命令解析:

  • 设1个变量aa的值为0时,打印hello,否则跳转到 label_1位置重新执行语句

12. 案例-定时关机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@echo off
color 0a

:"menu"
echo =========================
echo 1. 关机
echo 2. 取消
echo 3. 关闭此程序
echo =========================



// /p 表示cmd输入参数,case为变量名
set /p case="请输入选项: "


// 按照输入的参数跳转到相应的标签

if "%case%"=="menu" goto "menu"

if "%case%"=="1" goto "1"

if "%case%"=="2" goto "2"

if "%case%"=="3" goto "3"


:"1"
set /p time="请输入关机时间(单位/s): "
shutdown -s -f -t %time%
goto "menu"

:"2"
shutdown -a
goto "menu"


:"3"
exit