超详细 批处理文件脚本(bat) 教程(持续更新)

这篇具有很好参考价值的文章主要介绍了超详细 批处理文件脚本(bat) 教程(持续更新)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 目录

前言

(1)使用echo输出字符串

(2)使用echo拼接字符串

i)没有变量,直接拼接

ii)有变量,拼接变量

 (3)只想打印结果,不想显示回显,可以用@echo off

(4)pause关键字 作用是将dos界面暂停关闭

(5)title标识符,用来设置dos的标题

(6)rem关键字用于注释,bat脚本运行的时候就不会执行该行语句了

(7)想打印当前路径,可以使用 %cd% 或者 %~dp0

(8)cd关键字,进入指定文件夹

(9)cls关键字可用于清屏,自行测试

(10)中文乱码解决方案

i)使用 chcp 65001 命令行

ii)将bat文件使用txt编辑,然后另存为时选择 ANSI 编码格式

 (11)start标识符可用于调用其他程序,如可执行文件exe

(12)读取dos输入,这里需要用到set标识符,还有参数/p

(13)bat的函数声明,需要用到 特殊字符 :(英文的冒号)

(14)goto标识符可用于函数跳转,其中特别的是 goto :eof 可用于停止往下继续执行命令行

(15)call标识符也可以用于调用函数,也可以调用别的bat脚本

(16)if标识符用于条件判断

(17)%errorlevel% 是脚本内置变量,等于0时代表前面命令执行没有报错

(18)for标识符用于循环

i)for 进阶 delims(分隔符),读取的字符串会以这些分隔符进行拆分成多个子字符串

 ii)for 进阶 token(标识列),读取的字符串列会以标识列索引赋值给变量

(19)>> 重定向符号 可以将结果输出到文件中

 (20)>nul 命令意思是将结果抛弃

(21)bat中的字符串操作

i)字符串中是否包含某个字符串

 ii)字符串删除所有空格

iii)字符串截取

(22)copy标识符可以复制文件或者文件夹,自行测试

(23)del标识符可以删除文件,自行测试


前言

bat批处理脚本是一门比较冷门的脚本语言,适用于windows。在实际的项目开发中,在windows系统中的开发语言不少是需要搭建很复杂的环境或编写好的程序需要编译成相应可执行文件才能使用,因此偶尔会希望有个语言不需要编译且容易获得——bat批处理脚本就是这样一门windows脚本语言。

废话不多说,直接进主题:

(1)使用echo输出字符串

打印程序猿口号:“hello world”

rem test.bat
echo hello world
pause

打印结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(2)使用echo拼接字符串

i)没有变量,直接拼接

echo "hello" "world"
pause

拼接结果如下:

bat脚本,bat,运维,batch,经验分享,windows

ii)有变量,拼接变量

那首先我们得知道bat中变量是怎么声明和赋值的。这里需要用set标识符

PS:bat对标识符后的等于"="号之间的空格格式要求严格,标识符后不要有空格!

set param1=hello
set param2=world
echo %param1%%param2%ok
pause

使用变量的时候,需要给变量前后百分号%。拼接字符串结果如下

bat脚本,bat,运维,batch,经验分享,windows

 (3)只想打印结果,不想显示回显,可以用@echo off

@echo off
set param1=hello
set param2=world
echo %param1%%param2%ok
pause

 @echo off 是关闭回显的意思,相对的 @echo on 可以打开回显

bat脚本,bat,运维,batch,经验分享,windows

(4)pause关键字 作用是将dos界面暂停关闭

(5)title标识符,用来设置dos的标题

@echo off
title this is a test
set param1=hello
set param2=world
echo %param1%%param2%
pause

设置标题后的结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(6)rem关键字用于注释,bat脚本运行的时候就不会执行该行语句了

@echo off
title this is a test
set param1=hello
set param2=world
rem echo 这里不执行,下面这句是echo拼接语句
echo %param1%%param2%
pause

注释语句不执行结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(7)想打印当前路径,可以使用 %cd% 或者 %~dp0

@echo off
title this is a test
echo %cd%
echo %~dp0
pause

当前路径打印结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(8)cd关键字,进入指定文件夹

@echo off
title this is a test
echo %cd%
cd test
echo %cd%
pause

进入文件夹结果如下:

bat脚本,bat,运维,batch,经验分享,windows

PS: cd .. 则是返回上一层文件夹

(9)cls关键字可用于清屏,自行测试

(10)中文乱码解决方案

bat脚本,bat,运维,batch,经验分享,windows

i)使用 chcp 65001 命令行

@echo off
chcp 65001
title this is a test
set param1=hello
set param2=world
echo %param1%%param2%你好
pause

 bat脚本,bat,运维,batch,经验分享,windows

ii)将bat文件使用txt编辑,然后另存为时选择 ANSI 编码格式

bat脚本,bat,运维,batch,经验分享,windows

 (11)start标识符可用于调用其他程序,如可执行文件exe

@echo off
title this is a test
start werl
pause

调用exe结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(12)读取dos输入,这里需要用到set标识符,还有参数/p

格式是  set /p 变量=提示语等

@echo off
title this is a test
set /p inp=请输入:
echo %inp%
pause

读取输入结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(13)bat的函数声明,需要用到 特殊字符 :(英文的冒号)

@echo off
title this is a test

:fun_main
	echo 这是个测试函数
	
:fun_test
	echo 测试函数+1

pause

bat是串行执行命令行,所以如果没有命令控制,bat会将所有的命令行和函数从上到下全部执行

bat脚本,bat,运维,batch,经验分享,windows

(14)goto标识符可用于函数跳转,其中特别的是 goto :eof 可用于停止往下继续执行命令行

@echo off
title this is a test

:fun_main
	echo 这是个测试函数
	pause
	goto :eof
	
:fun_test
	echo 测试函数+1
	pause
	goto :eof
	
pause

:fun_test 函数不再继续被执行,结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(15)call标识符也可以用于调用函数,也可以调用别的bat脚本

@echo off
title this is a test

:fun_main
	echo 这是个测试函数
	call :fun_test
	pause
	goto :eof
	
:fun_test
	echo 测试函数+1
	goto :eof
	
pause

函数调用结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(16)if标识符用于条件判断

(17)%errorlevel% 是脚本内置变量,等于0时代表前面命令执行没有报错

@echo off
title this is a test

:fun_main
	echo 这是个测试函数
	call :fun_test
	if %errorlevel%==0 (
		call :fun_aa
	)
	pause
	goto :eof
	
:fun_aa
	echo 前面调用没有报错
	goto :eof
	
:fun_test
	echo 测试函数+1
	goto :eof
	
pause

判断语句执行结果如下:

bat脚本,bat,运维,batch,经验分享,windows

(18)for标识符用于循环

dir /b 指定目录 这个语法可以用于获得指定目录下的所有文件和文件夹

for /f 遍历指定目录下所有的文件和文件夹

for /d 遍历指定目录下所有的文件夹

for /r 遍历指定目录下所有的文件和子文件夹中的文件

%%i 则是声明的变量,可以是任意的变量名,但变量名前面必须加上两个百分号%%

@echo off
title this is a test

:fun_main
	set curdir=%~dp0test1\
	echo 有后缀的是文件,无后缀的是文件夹
	for /f %%i in ('dir /b "%curdir%"') do (
		echo %%i
	)
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

i)for 进阶 delims(分隔符),读取的字符串会以这些分隔符进行拆分成多个子字符串

@echo off
title this is a test

:fun_main=
	for /f "delims=,/" %%i in (test.txt) do (
		echo %%i
	)
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

 ii)for 进阶 token(标识列),读取的字符串列会以标识列索引赋值给变量

@echo off
title this is a test

:fun_main=
	for /f "delims=,/ tokens=1,2" %%a in (test.txt) do (
		echo 索引1:%%a
		echo 索引2:%%b
	)
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

(19)>> 重定向符号 可以将结果输出到文件中

@echo off
title this is a test

:fun_main
	set curdir=%~dp0test1\
	dir /b %curdir%>>testaa.txt
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

 (20)>nul 命令意思是将结果抛弃

@echo off
title this is a test

:fun_main
	set curdir=%~dp0test1\
	dir /b %curdir%>nul
	pause
	goto :eof

执行结果不会产生其他数据

(21)bat中的字符串操作

i)字符串中是否包含某个字符串

echo 字符串 | findstr 子字符串 >nul && (

        包含时的情况

)

包含的情况如下:

@echo off
title this is a test

:fun_main
	set strname=hello
	set teststr=213123 hello world
	echo %teststr% | findstr %strname% >nul && (
		echo %teststr% 中包含 %strname%
		pause
		goto :eof
	)
	echo %teststr% 中不包含 %strname%
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

不包含的情况如下:

@echo off
title this is a test

:fun_main
	set strname=hel2lo
	set teststr=213123 hello world
	echo %teststr% | findstr %strname% >nul && (
		echo %teststr% 中包含 %strname%
		pause
		goto :eof
	)
	echo %teststr% 中不包含 %strname%
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

 ii)字符串删除所有空格

@echo off
title this is a test

:fun_main
	set teststr=213123 hello world
	set teststr=%teststr: =%
	echo %teststr%
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

iii)字符串截取

@echo off
title this is a test

:fun_main
	set teststr=*213123 hello world##
	echo %teststr%
	set teststr=%teststr:~1,-1%
	echo %teststr%
	pause
	goto :eof

bat脚本,bat,运维,batch,经验分享,windows

(22)copy标识符可以复制文件或者文件夹,自行测试

@echo off
title this is a test

:fun_main
	copy .\test.txt .\aa\ >nul
	pause
	goto :eof

(23)del标识符可以删除文件,自行测试

del /f 强制删除只读文件

del /s 从所有的目录下删除指定文件

del /q 安静模式文章来源地址https://www.toymoban.com/news/detail-784171.html

@echo off
title this is a test

:fun_main
	del /f /s /q test.txt >nul
	pause
	goto :eof

到了这里,关于超详细 批处理文件脚本(bat) 教程(持续更新)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows bat批处理基础命令学习教程

    1.批处理文件是一个“.bat”结尾的文本文件,这个文件的每一行都是一条DOS命令。可以使用任何文本文件编辑工具创建和修改。 2.批处理是一种简单的程序,可以用 if 和 goto 来控制流程,也可以使用 for 循环。 3.批处理的编程能力远不如C语言等编程语言,也十分不规范。 4

    2024年02月06日
    浏览(58)
  • Windows 批处理(bat) findstr命令使用教程

    结果: 详细参数列表 参数 参数说明 /B 在一行的开始配对模式。 /E 在一行的结尾配对模式。 /L 按字使用搜索字符串。 /R 将搜索字符串作为一般表达式使用。 /S 在当前目录和所有子目录中搜索匹配文件。 /I 指定搜索不分大小写。 /X 打印完全匹配的行。 /V 只打印不包含匹配

    2024年02月10日
    浏览(73)
  • Windows 批处理(bat) for循环语句使用教程

    注意事项: f or、in 和 do是for语句的 ,它们三个缺一不可; 在 in 之后,do 之前的 括号\\\"()\\\"不能省略 ,do 后可以有括号,且 括号内不能有注释 %%i 是for语句中 对形式变量的引用 ; for语句的形式变量I, 可以换成26个字母中的任意一 个,这些字母会 区分大小写 ; in和

    2024年02月04日
    浏览(48)
  • Windows 批处理(bat) if条件判断语句使用教程

    在bat脚本中,if条件判断语句共有6种比较操作符,分别为 操作符(不区分大小写) 描述 全称 equ 等于 equal neq 不等于 no equal lss 小于 less than leq 小于等于 leq less than or equal gtr 大于 greater than geq 大于等于 geq greater than or equal 其中,只有等于操作符可以使用符号 “==” 表示,其

    2024年02月03日
    浏览(53)
  • 在window使用bat批处理文件执行cmd命令

    1、新建一个txt文本文档。然后在文档里面写入如下代码: 意思是在路径E:environmentELKlogstash-6.5.4bin执行logstash -f logstash.conf命令。路径、命令用隔开,命令之间也用隔开。如果还需要新增多条命令如Java-version则在logstash -f logstash.conf后面加java-version代码如下: 2、编辑好之后,

    2024年02月11日
    浏览(52)
  • 使用批处理文件(.bat)启动多个CMD窗口并执行命令

    由于每次启动本机的kafka都需要打开2个cmd窗口,分别启动zookeeper服务和kafka服务,操作相对繁琐,于是想起了批处理来帮忙一键启动。 在桌面新建一个txt文件,改后缀名为.bat,并加上下面的代码。 代码结尾不加pause的原因是,执行完关闭窗口,因为不需要该窗口保留着,免得

    2024年02月16日
    浏览(50)
  • 如何检测Windows服务停止后自动启动?自动运行.bat批处理文件?

    作者:西瓜程序猿 主页传送门:https://www.cnblogs.com/kimiliucn 想要确保你的Windows服务即使在崩溃后也能自动重启吗?这篇文章教你如何用一个小巧的批处理脚本来实现这一点。教你怎么设置定时检查,如果发现服务挂了,就立刻拉起来。跟着步骤做,让你的服务稳定运行不再是

    2024年02月05日
    浏览(69)
  • Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法

    有时候为了方便别人使用,我们会选择去编写各种各样的命令行脚本:给Windows用户编写 .bat cmd批处理脚本,给macOS、Linux用户编写 .sh bash shell脚本。 面向国内用户当然应当首选中文作为脚本的显示语言,如果还要支持海外用户使用,那么能提供国际化多语言( i18n )支持那是

    2024年02月08日
    浏览(54)
  • 批处理批量替换文本内容,用bat代码全篇替换txt文本文件中指定字符信息

    批处理批量全篇替换txt文本文件中指定字符信息,修改三个参数后即可使用,话不多说直接上代码: @echo off setlocal EnableDelayedExpansion set path_str=\\\"C:UsersAdministratorDesktop1.txt\\\" set old_str=需要替换的原文本内容 set new_str=替换后的文本内容 set souerce_path=%path_str% for /f \\\"tokens=1* delims=

    2024年02月11日
    浏览(53)
  • windows系统cmake生成c++动态库无lib文件解决方法 && bat文件批处理cmd命令

    作为cmake初学者,在windows系统下使用cmake生成c++动态库时出现了下图所示问题,是关于lib文件的。找了一圈,也没发现生成有lib文件。 在google上查,才发现windows系统下动态库生成lib文件,还需要添加以下命令: 生成动态库Demo(链接在此) 文件目录架构: ——源文件目录 —

    2023年04月25日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包