Windows常用批处理命令

前言

  1. 批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。
  2. 批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。
  3. 批处理的编程能力远不如C语言等编程语言,也十分不规范。
  4. 每个编写好的批处理文件都相当于一个DOS的外部命令,把它所在的目录放到DOS搜索路径(path)中,即可在任意位置运行。
  5. C:\AUTOEXEC.BAT 是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。
  6. 大小写不敏感(命令符忽略大小写)
  7. 批处理的文件扩展名为 .bat 或 .cmd。
  8. 在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe来运行该文件。

%[0-9]用于传递参数,set用于赋值变量

rem test.bat
rem 传递参数demo
set test1=%1
@echo %0
@echo %1
@echo test1----%test1%
@echo %2

执行结果:
Windows常用批处理命令_第1张图片

help命令

使用windows自带的帮助工具查询相关语法
注:命令 /? >> 文件路径+文件名.txt可以将内容输出到指定的路径下的指定文件

语法:以下三种为常见的帮助命令语法

  1. 命令 /?
  2. 命令 /h
  3. help 命令

echo命令

语法 echo [no|off] [message]
一般dos命令行没有加@符号,该命令会打印在命令行窗口很影响观看。所以会在bat文件头部使用@echo no来隐藏下面所有echo命令,这样下面的echo命令就不需要加@符号。

上面的例子可以改成这样

echo off
rem test.bat
rem echo命令demo
set test1=%1
echo %0
echo %1
echo test1----%test1%
echo %2

执行结果会多显示一行echo off

@命令

用于隐藏当前行的dos命令。常用于bat文件开头,组合echo off一直使用可以全局隐藏dos命令。

@echo off
rem test.bat
rem echo命令demo
set test1=%1
echo %0
echo %1
echo test1----%test1%
echo %2

只会输出变量0,1,2的值,不会输出dos语句

goto命令

语法:goto 标签行名
例如:

@echo off
set test1=%1
if /I "%test1%" == "1" goto value2
echo %0
echo %1
echo test1----%test1%

:value2
echo %2

执行结果:
当变量1等于1时,跳到后面只输出变量2的值。不等于1就按顺序执行。
在这里插入图片描述

rem命令

常用于bat文件中用于添加关于bat文件的注释和代码解释信息。并且不会显示在执行框中。
例如

@rem 这是个bat文件

pause命令

执行到该命令时,会暂停并且等待用户下一步操作之后再执行后续dos命令。

@echo off
rem pause命令demo
:again
echo 123
pause
goto again

执行结果
Windows常用批处理命令_第2张图片

call命令

可以用于调用外部的批处理文件,并且执行完后依旧会返回父批处理文件继续执行,不用call则不会执行父批处理文件后续dos命令。
注意:子批处理文件不可以使用exit命令。
语法:call [绝对路径(盘符+文件路径)] [文件名称+后缀] [参数]
例如:

@echo off
rem test.bat
rem call命令demo
echo test批处理文件
call F:\test1.bat
exit
@echo off
rem test1.bat
rem call命令demo
echo test1批处理文件

执行结果:
在这里插入图片描述
可能有人会遇到打印不出来中文或者中文乱码,这时候只需要将文件内容转码成ansi编码即可。
使用notepad打开bat文件–编码–转为ansi编码。
Windows常用批处理命令_第3张图片
查看右下角文件内容编码,如果是utf-8那么在命令行打印就会乱码,因为命令行是gbk编码。

在这里插入图片描述

start命令

用于调用外部批处理程序和dos命令行程序
常用参数:

  1. MIN 开始时窗口最小化
  2. SEPARATE 在分开的空间内开始 16 位 Windows 程序
  3. HIGH 在 HIGH 优先级类别开始应用程序
  4. REALTIME 在 REALTIME 优先级类别开始应用程序
  5. WAIT 启动应用程序并等候它结束
  6. parameters 这些为传送到命令/程序的参数

语法:start /xx /xx 文件路径+文件名.后缀 参数

注:当文件名有空格时,在路径中使用双引号进行包括。(“program files”)

例如:

@echo off
rem test.bat
start /MIN /wait F:\test1.bat
exit
@echo off
rem test1.bat
rem start命令demo
echo test1批处理文件
pause

if命令

1.if

语法:if [not] “%变量%” == “值” 待执行dos命令
例如:

@echo off
set test1=%1
if /I "%test1%" == "1" goto value2
echo %0
echo %1
echo test1----%test1%

:value2
echo %2

当变量1等于1时,就跳到value2后执行。

2.if exist

语法:if [not] exist 文件路径+文件名+后缀 待执行dos命令
例如:

--如果存在test1就打印出来
if exist F:\test1.bat type F:\test1.bat

3.if errorlevel

语法:if [not] errorlevel 数字 待执行dos命令
根据程序执行的返回码进行判断执行不同的dos命令,一般为0或1。

@echo off
XCOPY F:\test.bat D:\
IF ERRORLEVEL 1 (ECHO 文件拷贝失败
) Else IF ERRORLEVEL 0 ECHO 成功拷贝文件
pause

XCOPY命令详解(XCOPY /?查询相关语法)
1.功能:复制指定的目录和目录下的所有文件连同目录结构。
2.类型:外部命令
3.格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]
4.使用说明:
(1)XCOPY是COPY的扩展,可以把指定的目录连文件和目录结构一并拷贝,但不能拷贝隐藏文件和系统文件;
(2)使用时源盘符、源目标路径名、源文件名至少指定一个;
(3)选用/S时对源目录下及其子目录下的所有文件进行COPY。除非指定/E参数,否则/S不会拷贝空目录,若不指定/S参数,则XCOPY只拷贝源目录本身的文件,而不涉及其下的子目录;
(4)选用/V参数时,对的拷贝的扇区都进行较验,但速度会降低。

4.else

语法: if 条件 (成立时执行的命令) else (不成立时执行的命令)
注:如果 else 的语句需要换行,if 执行的行尾需用“^”连接,并且 if 执行的动作需用(括起来),否则报错
例如:

if 1 == 0 ( echo comment1 ) else if 1==0 ( echo comment2 ) ^
else (echo comment3 )

5.比较运算符

  1. EQU - 等于 (一般使用“==”)
  2. NEQ - 不等于 (没有 “!=”,改用“ if not 1==1 ”的写法)
  3. LSS - 小于
  4. LEQ - 小于或等于
  5. GTR - 大于
  6. GEQ - 大于或等于

choice命令

让用户输入一个字符,根据字符执行不同的dos命令。(choice /? 获取语法)
其中常用:
/M为自定义提示消息
/C 指定创建选项列表默认为yn
/N隐藏选项,默认不隐藏

例如:

@echo off
:check
CHOICE /C abcd /M "选项 1 请选择 a,选项 2 请选择 b,选项 3 请选择 c,选项 4 请选择 d。"
if errorlevel 255 echo 错误
@rem errorlevel 判断是优先数值小的,也就是234也满足1,所以必须倒序判断errorlevel
if errorlevel 4 goto actionD
if errorlevel 3 goto actionC
if errorlevel 2 goto actionB
if errorlevel 1 goto actionA
:actionA
echo aaa
goto check
:actionB
echo bbb
goto check
:actionC
echo ccc
goto check
:actionD
echo ddd
goto check

pause
goto check
exit

执行结果:
Windows常用批处理命令_第4张图片

for命令

主要用于参数在指定的范围内循环执行命令。
语法:for /?查看篇幅较多

查看当前目录下的bat文件
for %c in (*.bat) do (echo %c)

你可能感兴趣的:(项目备忘录,windows,批处理命令,bat文件)