本文主要是介绍批处理bat基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基础知识
-
@echo off
@是不显示当前命令的回显;echo off是关闭除此之外的所有命令的回显;合在一起就是不显示所有命令的回显,包括当前命令的回显。 -
@rem 或者 ::
批处理中的注释语法。 -
chcp 65001
切换当前cmd窗口的语言为UTF8,支持中文的显示。 -
cd /d %~dp0
切换当前目录为批处理文件所在目录。一定要加/d。 -
setlocal enabledelayedexpansion
延时扩展。for循环里面使用最多。因为for循环是按照一行命令去执行的,批处理的机制会先预处理一下,所以要使用最新的变量值,就需要使用延迟扩展语法。 -
> nul
放弃当前命令的输出。一般跟在一条命令的后面,表示不显示当前命令的输出内容。 -
findstr 字符串1 文件1 >nul && (文件1包含字符串1) || (文件1不包含字符串1)
文件中查找指定字符串,并且根据查找的结果,做后续相应的操作。 -
findstr 字符串1 文件1 if !errorlevel! equ 0 ( echo 查找到字符串 ) else ( echo 没有查找到字符串 )
含义同5。需要使用到延迟扩展才行。 -
echo 字符串1 | findstr 字符串2 >nul && (字符串2包含字符串1) || (字符串2不包含字符串1)
字符串中查找指定字符串,并且根据查找结果,做后续相应的操作。
需要注意的是,findstr命令后面紧跟的&& || 代表了两种查找结果的表示方式;
if !errorlevel! equ 0 () else ()也是一种方式,0表示查找到,其他表示没查找到。 -
for循环
for %%f in (%folderPath%) do ( echo %%f )
打印路径下的每个文件的名字。
下面列举几项 for的参数:
for /d(D) 遍历文件夹::括号里的 * 代表bat文件所在的目录 for /d %%i in (*) do ( echo %%i )
for /l(L) 数字序列
@REM 表示以step为增量从开始到结束的一个数字序列,此处是:1开始,每次+3,20结束 for /l %%i in (1,3,20) do (echo %%i)
for /f(F) 打印文件内容
@REM 语法格式 @REM for /f ["options"] %%i IN (file) DO command @REM for /f ["options"] %%i IN ("string") DO command @REM for /f ["options"] %%i IN ('command') DO command::表示循环输出ls命令(列出当前目录下的文件和文件夹)的每一个项 ::不加参数,默认以空格分割此行文本(等同于"delims= "注意有一个空格),即只显示第一个空格前或此行结尾前文本 ::注意,此处打印文件的名字,文件名如果有空格,会截取到空格前,想要避免,加"delims=" for /f "delims=" %%i in ('ls') do (set aa= %%iecho !aa! )@REM /f "tokens=2 delims= " @REM tokens的作用就是当你经过delims将每一行分为更小的元素时,由它来控制要取哪个或哪几个。:: 取 dilims 分成的第2个元素for /f "tokens=2 delims= " %%i in (a.txt) do echo %%i:: 取 dilims 分成的第2到4个元素for /f "tokens=2,3,4 delims= " %%i in (a.txt) do echo %%i %%j %%kfor /f "tokens=2-4 delims= " %%i in (a.txt) do echo %%i %%j %%k:: i j k 分别代表取的三个元素:: 取 dilims 分成的第2之后的元素for /f "tokens=2,* delims= " %%i in (a.txt) do echo %%i %%j %%k@REM /f “skip=1” @REM 用 skip 来告诉for跳过前两行。
-
timeout /T 5 /NOBREAK
timeout /T 延迟秒数,单位秒 不受键盘阻塞 -
字符拼接和截取
截取语法:%str:~a,b%
拼接直接拼就行@echo off @setlocal enabledelayedexpansion chcp 65001 cd /d %~dp0@REM 字符串截取 [a,b) 0代表从左第一个字符,-1代表最后一个字符,b为负数则从右往左 set str=hello world ok set newStr=%str:~0,-1% echo str=%str% echo newStr=%newStr%set s1=你好 set s2=, set s3=你好 set s6=%s1%%s2%%s3% echo %s6%pause
参考博主的文章
参考博主的文章
这篇关于批处理bat基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!