bat编程基础教程

0. 简介

批处理(Batch),也称为批处理脚本。是无格式的文本文件,它包含一条或多条命令,应用于DOS和Windows系统中,由DOS或者Windows系统内嵌的命令解释器
(通常是COMMAND. COM或者CMD.EXE)解释运行。类似于Unix中的Shell脚本。通常应用于简化日常或重复性任务。

  1. 批处理文件具有 .bat 或者 .cmd 的扩展名,文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。

  2. 批处理是一种简单的程序,可以逐行书写在命令行中会用到的各种命令,也可以用 if、for、goto等来控制流程。

  3. 如果需要实现更复杂的应用,可以利用外部程序(系统本身提供的外部命令和第三方提供的工具或者软件)

  4. C:\AUTOEXEC.BAT是每次系统启动时都会自动运行的,可以将每次启动时都要运行的命令放入该文件中。

  5. 大小写不敏感(命令符忽略大小写),编写也十分不规范。

1. 使用方式

在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用Cmd.exe按照该文件中各个命令出现的顺序来逐个运行它们。

2. 常用语法(cmd命令)

help 提供 Windows 命令的帮助信息。
HELP [command]

    command - 显示该命令的帮助信息。

2.1 目录操作

cd      显示当前目录名或改变当前目录。  
md      创建目录。  
rd      删除一个目录。  
dir     显示目录中的文件和子目录列表。  
tree    以图形显示驱动器或路径的文件夹结构。  

2.2 文件操作

type    显示文本文件的内容。
copy    将一份或多份文件复制到另一个位置。
del     删除一个或数个文件。
move    移动文件并重命名文件和目录。(Windows XP Home Edition中没有)
ren     重命名文件。
replace 替换文件。
attrib  显示或更改文件属性。
find    搜索字符串。
fc      比较两个文件或两个文件集并显示它们之间的不同

2.3 网络操作

ping        进行网络连接测试、名称解析
ftp         文件传输
net         网络命令集及用户管理
telnet      远程登陆
ipconfig    显示、修改TCP/IP设置
msg         给用户发送消息
arp         显示、修改局域网的IP地址-物理地址映射列表

2.4 系统操作

at          安排在特定日期和时间运行命令和程序
shutdown    立即或定时关机或重启
tskill      结束进程
taskkill    结束进程(比tskill高级,但WinXPHome版中无该命令)
tasklist    显示进程列表(Windows XP Home Edition中没有)
sc          系统服务设置与控制
reg         注册表控制台工具
powercfg    控制系统上的电源设置

2.5 其他命令介绍

echo           显示消息,或将命令回显打开或关闭。
rem            记录批处理文件或 CONFIG.SYS 中的注释(批注)。
pause          暂停批处理文件的处理并显示消息。
call           从另一个批处理程序调用这一个。
start          启动单独的窗口以运行指定的程序或命令。
goto           将 Windows 命令解释程序定向到批处理程序中某个带标签的行。
set            显示、设置或删除 Windows 环境变量。

3. 特殊符号

3.1 回显屏蔽 @

表示不显示@后面的命令

:: 我们一般用如下指令,作为批量处理文件的开头
@echo off

3.2 重定向 > , >> , <

> ,>> 将输出信息重定向到指定的设备或文件,系统默认输出到显示器

:: > 如果file.txt存在,就清空输入,不存在就创建
echo abcd > file.txt
:: >> 如果file.txt存在,就追加输入,不存在就创建
echo abcd >> file.txt

< 将输入信息来源重定向为指定的设备或文件

set /p var= < file.txt
echo %var%

3.3 管道符号 |

command_1 | command_2

3.4 转义符 ^ ,%

将特殊符号转化为一般符号,特殊符号指:| & > <

:: 在屏幕输出 test > file.txt
cheo test ^> file.txt

:: 在屏幕输出 100%
cheo 100%%

3.5 逻辑命令符 & , && , ||

&

连接n个DOS命令,并把这些命令按顺序执行,而不管是否有命令执行失败

&&

当 && 前面的命令成功执行时,才执行 && 后面的命令,否则不执行

||

当 || 前面的命令失败时,执行 || 后面的命令,否则不执行

4. 控制流

4.1 if 语句

更多操作说明可以 help if

(1)if 格式
  1. IF [NOT] ERRORLEVEL number command
  2. IF [NOT] string1 compare-op string2 command
  3. IF [NOT] EXIST filename command
(2)if 说明

NOT:指定只有条件为 false 的情况下,Windows 才应该执行该命令。

ERRORLEVEL number:如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true。

string1 compare-op string2:如果指定的文字字符串匹配,指定条件为 true。

EXIST filename:如果指定的文件名存在,指定条件为 true。

command:如果符合条件,指定要执行的命令。如果指定的条件为 false,命令后可跟 ELSE 命令,该命令将在 ELSE 关键字之后执行该命令。

(3)例子
:: 书写格式
:: *********************
:: IF EXIST filename 如果filename文件存在,则执行()里面的语句,否则指向else ()里面语句
:: del filename 删除filename文件
:: echo filename. missing 打印filename. missing
:: *********************
IF EXIST filename. (
    del filename.
) ELSE (
    echo filename. missing.
)

:: ELSE 子句必须出现在同一行上的 IF 之后
:: 如果都放在同一行上
IF EXIST filename. (del filename.) ELSE echo filename. missing

4.2 for 语句

更多操作说明可以 help for

(1)for 格式

FOR %variable IN (set) DO command [command-parameters]

(2)for 说明

%variable:指定一个 单一字母 可替换的参数。

(set):指定一个或一组文件。可以使用通配符。

command:指定对每个文件执行的命令。

command-parameters:为特定命令指定参数或命令行开关。

(3)例子
:: 书写格式
:: *********************
::格式: FOR %%variable IN (set) DO command 
::说明:%%variable是批处理程序里面的书写格式,在DOS中书写为%variable
::无开关
:: *********************
for %%v in (a,"b c",d) do echo %%v

:: *********************
:: 格式:FOR /L %%variable IN (start,step,end) DO command
:: 说明:start为开始计数的初始值,step为每次递增的值,end为结束值。当end小于start时,step需要设置为负数
:: 开关/L
:: *********************
for /l %%v in (1,2,10) do echo %%v

:: *********************
:: 格式:FOR /F ["options"] %%variable IN (set) DO command
:: 说明:set为("string"'command'、file-set)中的一个;
::      options是(eol=c、skip=n、delims=xxx、tokens=x,y,m-n、usebackq)中的一个或多个的组合
		eol=c           - 指一个行注释字符的结尾(就一个)
		skip=n          - 指在文件开始时忽略的行数。
        delims=xxx      - 指分隔符集。这个替换了空格和制表符的默认分隔符集。
        tokens=x,y,m-n  - 指每行的哪一个符号被传递到每个迭代的 for 本身。这会导致额外变量名称的分配。
        				  m-n格式为一个范围。通过 nth 符号指定 mth。
        				  如果符号字符串中的最后一个字符星号,
        				  那么额外的变量将在最后一个符号解析之后分配并接受行的保留文本。
        usebackq        - 指定新语法已在下类情况中使用:在作为命令执行一个后引号的字符串
        				  并且一个单引号字符为文字字符串命令并允许在 file-set中使用双引号扩起文件名称。
:: 开关/F
:: *********************
for /f "tokens=1-3 delims=," %%a in ("1,3,7") do echo a=%%a b=%%b c=%%c

4.3 goto

更多操作说明可以 help goto

(1)go to 格式

GOTO label

label 指定批处理程序中用作标签的文字字符串

(2)例子
:label

echo label

goto label1

5 字符串的操作

关于 %variable %%variable %variable% 的介绍

%variable,%%variable 是FOR循环时用的。

%variable 是在DOS中书写,%%variable 是批处理程序里面的书写格式

%variable% 是一个变量的意思

5.1 截取字符串

%variable:~start,size%

@echo off
set var=abcde 12 345

:: start 正数为从前开始截取,负数为从最后开始截取
:: size 不写则默认为截取到末尾

:: 从第1个字符开始,截取5个
rem 截取前5个字符
echo %var:~0,5%

rem 从3个字符开始截取到末尾
echo %var:~2%

rem 截取最后5个字符
echo %var:~-5% 

pause > nul

5.2 替换字符串

%variable:OldCahr=NewChar%

@echo off
set var=abcde

:: 把 cd 替换成 fg   --> abfgd
echo %var:cd=fg%

:: 变量的值还是没有变,如果要改变则需要用set指令
set "var=%var:cd=fg%"

pause > nul

5.3 合并字符串

%variabl1%%variabl2%

@echo off
set var1=abc
set var2=def

:: 合并两字符串
echo %var1%%var2%

:: 合并替换
set "var1=%var1%%var2%"

pause > nul

5.4 扩展字符串

“扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理

详细说明 for /?

@echo off
echo 正在运行的这个批处理:
echo 完全路径:%0
echo 去掉引号:%~0
echo 所在分区:%~d0
echo 所处路径:%~p0
echo 文件名:%~n0
echo 扩展名:%~x0
echo 文件属性:%~a0
echo 修改时间:%~t0
echo 文件大小:%~z0
pause > nul

其中的%0是批处理里面的参数,代表当前运行的批处理的完全路径。
类似的还有%1-%9,分别代表传递来的第1-9个参数。

6 数值计算

更多详细使用 set /?

批量处理文件使用格式 :set /a expression ,expression代表计算表达式,计算表达式跟C语言里面的表达式基本上完全一致,但是没有自加、自减

@echo off
set /a var=1+2

echo %var%

Q&A

批处理文件编写时是中文,cmd运算时是乱码,怎么解决?

把.bat 或 .cmd 文件保存、编译转换为ANSI编码

  • 10
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对于一个新手来说,学习BAT脚本编写可能会显得有些困难,但只要按照以下几个步骤,就可以完成初步的学习: 第一步,了解BAT脚本的基本知识。BAT文件是一种批处理文件,它可以自动执行一系列的命令,这些命令可以简化许多日常工作的操作。BAT文件中可以包含各种命令,例如:echo、dir、copy、md等等,这些命令都是DOS系统中原有的命令。 第二步,学习BAT脚本的语法。BAT脚本有着自己的语法规则,新手需要学习如何编写语法正确的脚本。例如,每行命令要以“@echo off”作为开始,表示关闭显示命令,同时标志着本脚本为BAT文件。 第三步,了解BAT脚本的常用命令。BAT脚本有很多常用命令,例如:echo命令用于输出文本消息,rem命令用于添加注释,if命令用于条件判断,set命令用于定义变量等等。学习这些常用命令是BAT脚本编写的基础。 第四步,使用BAT脚本解决实际问题。学习BAT脚本后,新手可以试着使用BAT脚本解决一些实际问题,例如,制作自动备份脚本、自动清理垃圾文件脚本等等。 总之,学习BAT脚本需要耐心和学习的毅力,只要按照以上几点进行学习,就可以成为一个BAT脚本编写的初学者。 ### 回答2: BAT脚本是一种批处理脚本,它可以在Windows平台下执行多个命令或一个复杂的算法,这对于喜欢用命令行的管理员或需要批量执行任务的用户非常有用。 编写BAT脚本,需要以下几个步骤: 1. 在文本编辑器(如记事本)中新建一个文件,后缀名为.bat。文件名可以任意起,只要后缀名是.bat就行。 2. 在文件的开头,用@echo off命令关闭脚本的输出信息。如果没有这个命令,脚本执行时会把每个命令的输出都显示在屏幕上,很不方便。 3. 根据需要编写多个命令,每个命令占一行。命令可以是Windows自带的命令(如dir、cd等),也可以是其他应用程序的命令(如ping、xcopy等)。 4. 可以使用变量来存储和处理数据,使用for循环和if语句来实现逻辑控制。 以下是一个简单的例子,演示了如何使用BAT脚本创建一个目录、移动文件和删除文件: @echo off REM 创建目录 mkdir mydir REM 移动文件 move *.txt mydir REM 删除文件 del *.bak 5. 保存文件,并双击运行bat文件,或者在命令行窗口中进入脚本所在目录,执行.bat文件即可。 以上是BAT脚本编写教程的简介。BAT脚本虽然功能比较简单,但也有很多灵活、高级的应用场景。如果想深入学习BAT脚本编写,可以参考一些高级教程或者参与BAT脚本编写的论坛、社群,获取更多的经验和技巧。 ### 回答3: Bat脚本是Windows上的一种脚本语言,用于自动化执行一些操作和任务。Bat脚本通常以“.bat”或“.cmd”文件扩展名结尾,它是基于批处理文件的一种脚本语言Bat脚本是一种非常方便的自动化工具,几乎可以完成任何的命令行操作和Windows管理操作。 在编写Bat脚本之前,我们需要掌握基本的编程知识以及Windows一些基本的命令行操作。以下是一些基本的编写Bat脚本的步骤: 1. 打开记事本或任何您喜欢的文本编辑器,在文件中输入您要执行的命令或任务。例如:echo "Hello World!"表示打印“Hello World!”在输出窗口上。 2. 将文件保存为以“.bat”或“.cmd”结尾的文件,然后单击“保存”。 3. 双击新创建的.bat文件,它将打开一个命令行窗口并执行您编写的命令或任务。您也可以使用命令行或任务计划程序定期执行您的.bat文件。 现在让我们探讨一些更复杂的Bat脚本编写技巧。例如: 1. Bat脚本可以包含循环,if语句和不同的变量类型。这些语法规则与其他编程语言类似。 2. 使用set命令来创建和分配变量。例如,set myvar = hello,其中“myvar”是变量名,“hello”是变量值。您可以使用%myvar%来访问变量的值。 3. 使用echo命令来在输出窗口中打印消息或变量值。例如,echo %myvar%表示在输出窗口中打印变量的值。 4. 使用if语句来执行条件语句。例如,if %myvar%== hello (echo "Equal") else (echo "Not equal")表示如果变量myvar等于“hello”,则输出“Equal”否则输出“Not equal”。 总之,Bat脚本是一种非常实用和方便的工具,可以自动化执行许多常用的命令行操作和Windows管理操作。学习Bat脚本编程可以大大提高我们的工作效率。希望以上介绍对Bat脚本初学者有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值