【时时三省----bat脚本】bat脚本必备知识点

目录

一,常用命令

1,文件夹管理

2,文件管理

3,网络命令

4,系统管理

二,常用语法

1,注释

2,变量

3,判断

4,循环

5,函数

6,文件操作

7,字符串操作

7.1字符串连接

7.2 字符串截取

7.3 字符串查找

7.4 字符串替换

8,变量延迟

三,基本指令

1. rem 和 ::

2. echo 和 @

3. pause

4. errorlevel

5. title

6. color

7. goto 和 :

8. find

9. start

10. call

11. assoc 和 ftype

12. pushd 和 popd

13. if

14. mode

四、常用特殊符号

1. @

2. %

3. >

4. >>


山不在高,有仙则名。水不在深,有龙则灵。

                                                                        ----CSDN 时时三省

本文引用:

        批处理脚本(bat脚本)用法总结_批处理命令教程-CSDN博客

一,常用命令

1,文件夹管理

cd         显示当前目录名或改变当前目录。
md        创建目录。
rd         删除一个目录。
dir         显示目录中的文件和子目录列表。
tree         以图形显示驱动器或路径的文件夹结构。
path         为可执行文件显示或设置一个搜索路径。
xcopy         复制文件和目录树。

2,文件管理

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

3,网络命令

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

4,系统管理

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

二,常用语法

1,注释

  • :: 只能出现在每一行的开头,其后的内容被当作注释

  • REM 可用于任何位置,其后的内容被当作是注释

  • # 在每行的开头,其后内容被当作注释

2,变量

:: 定义数字变量
set /a n=0
:: 定义字符串变量
set s1=hellworld
set s2="Hello World"
set "s3=Hello, World!"
:: 定义数组变量
set arr = 1 2 3 4 5 6
@echo off 
set list=1 2 3 4 
(for %%a in (%arr%) do ( 
   echo %%a 
))

:: 提示用户输入他们的名字
set /p username=请输入您的名字: 

:: 显示输入的名字
echo 您好,%username%!

:: 提示用户输入一个数字
set /p number=请输入一个数字: 

:: 显示输入的数字并计算它的平方
set /a square=%number% * %number%
echo 您输入的数字是 %number%,它的平方是 %square%。

pause

1,变量名与内容之间通过=连接且没有空格

3,判断

1,只有等于操作符可以使用符号 == 表示

2,( 前面必须有空格

4,循环

for /l %%x in (1,1,10) do (
    echo 变量 x 的值是 %%x
)

:: 遍历指定目录所有文件
set "targetDir=C:\path\to\your\directory"
for /r "%targetDir%" %%f in (*) do (
    echo %%f
)

遍历文件中每一行

@echo off
setlocal

:: 设置文件路径
set "filePath=C:\path\to\your\file.txt"

:: 检查文件是否存在
if exist "%filePath%" (
    echo 文件路径:%filePath%
    echo.

    :: 使用 for /f 循环遍历文件中的每一行
    for /f "delims=" %%l in (%filePath%) do (
        echo %%l
    )
) else (
    echo 文件 %filePath% 不存在
)

endlocal

5,函数

exit /b [exitCode]

/b:选项表示结束当前的批处理脚本或子例程。
exitCode: 用于指定退出码。如果未提供 exitCode,则默认退出码为上一个命令的返回码。

@echo off

rem 定义函数
:myFunction
echo 这是我的函数
exit /b

rem 调用函数
call :myFunction
@echo off
call :main

::----------------------------------------------------
setlocal enabledelayedexpansion
rem 定义函数:获取字符串长度
:getStringLength
set "str=%~1"
set "len=0"
:loop
if defined str (
    set "str=!str:~1!"
    set /a "len+=1"
    goto loop
)
exit /b  rem 返回调用点
endlocal

::----------------------------------------------------
:main
call :getStringLength "Hello, World!"
echo Length of string is: %len%
call :getStringLength "Hello"
echo Length of string is: %len%

pause

6,文件操作

:: 创建文件
echo Hello > myfile.txt
:: 复制文件
copy source.txt destination.txt
:: 移动文件
move source.txt destination_folder\
:: 重命名文件
ren oldname.txt newname.txt
:: 删除文件
del myfile.txt

:: 判断文件是否存在
set "filePath=C:\path\to\your\file.txt"
if exist "%filePath%" (
    echo 文件存在
) else (
    echo 文件不存在
)

7,字符串操作

7.1字符串连接

set str1=Hello
set str2=World
set result=%str1% %str2%
echo %result%

这将输出 Hello World。在批处理中,可以使用 % 符号来引用变量,并使用空格将字符串连接起来。

7.2 字符串截取

set myvar=abcdef
set substring=%myvar:~0,3%
echo %substring%

这将输出 abc。:~ 后跟的是截取的起始索引和长度。在这个例子中,0,3 表示从索引 0 开始截取,长度为 3。

7.3 字符串查找

set myvar=abcdef
echo %myvar:~2%

这将输出 cdef。如果省略长度,则从指定的索引开始一直截取到字符串末尾。

7.4 字符串替换

set myvar=abc123abc
set newvar=%myvar:abc=xyz%
echo %newvar%

8,变量延迟

setlocal enabledelayedexpansion 用于启用延迟扩展(Delayed Expansion)模式,它是 Windows 批处理脚本中的一个特性。在启用延迟扩展后,! 可以用来获取变量的值,而不仅仅是 %。

在默认模式下,批处理脚本在执行代码块时会提前替换变量的值,因此如果在一个代码块中改变了变量的值,这个改变后的值在同一个代码块中将不会被正确地获取。启用延迟扩展后,可以使用 ! 来延迟获取变量的值,使得在代码块内部修改变量后,可以正确地获取到修改后的值。
endlocal 用于结束由 setlocal 开始的本地环境,恢复到调用 setlocal 之前的环境状态。

在批处理脚本中,setlocal 用于创建一个本地环境,这个本地环境中的变量和状态只对当前批处理文件有效,不会影响到其他批处理文件或者批处理文件的外部环境。endlocal 用于关闭这个本地环境,恢复到调用 setlocal 之前的环境状态。
这样做的好处是可以在脚本中创建临时的环境,进行一些操作,而不用担心对外部环境产生影响。通常在脚本的末尾会使用 endlocal 来确保脚本结束时本地环境被正确关闭,以免影响到其他的脚本执行。

三,基本指令

注意,bat 脚本不区分大小写。

1. rem 和 ::

:: 用于进行文本的注释,执行后不会回显内容。
rem 用于文本注释,执行后会回显内容。

2. echo 和 @

@字符放在命令前将关闭该命令回显,⽆论此时echo是否为打开状态。

打开回显功能:echo on
关闭回显功能:echo off
输出空行:echo. 或 echo, 或 echo: 或 echo/ 等
显示当前echo状态:echo
输出提示信息:echo 信息内容
答复提问:echo 答复语|执行的操作
新建文件:echo 文件内容>文件名
新增内容:echo 文件内容>>文件名
喇叭鸣响:echo ^g

3. pause

使当前程序暂停,并输出以下内容,作用是为了让我们知道程序运行到哪步了。
显示其他提示语:echo 其他提示语 & pause > nul

4. errorlevel

获取程序返回码:echo %errorlevel%
每个命令运⾏结束,可以⽤这个命令⾏格式查看返回码。⽤于判断刚才的命令是否执⾏成功,默认值为0,⼀般命令执⾏出错会设 errorlevel 为1。

5. title

设置cmd窗口的标题,语法如下:

title 我的窗口


6. color

颜⾊属性由两个⼗六进制数字指定 – 第⼀个为背景色,第⼆个则为前景色。每个数字可以为以下任何值之⼀。

7. goto 和 :

通过goto:标号可以实现跳转执行命令。

@echo off
:start
set /a var+=1
echo %var%
if %var% leq 3 GOTO start
pause

8. find

在文件中搜索字符串,语法如下:

find [/v][/c][/n][/i][/off[line]] "字符串" [[drive:][path]filename[...]]
  • /v 显示所有未包含指定字符串的行
  • /c 仅显示包含字符串的行数
  • /n 显示行号
  • /i 搜索字符串时忽略大小写
  • /off[line] 不要跳过具有脱机属性集的文件
  • “字符串” 指定要搜索的字符串
  • [drive:][path]filename 指定要搜索的文件

9. start

批处理中用来调用外部程序的命令,语法如下:

start 外部程序 [参数]

参数:

/D path 指定程序的起始目录
/MIN 最小化启动窗口
/MAX 最大化启动窗口
/WAIT 等待启动的程序结束后才继续脚本
/B 在同一窗口中启动程序
/b 隐藏控制台执行程序
说明:
该命令将在新进程中运行外部程序,原批处理程序将继续执行
执行运行外部程序则会等待外部程序完成后再继续执行后续指令
示例:start explorer d:\ 将会使用图形界面打开D盘。

10. call

CALL命令可以在批处理执⾏过程中调⽤另⼀个批处理,只有当被调用的批处理执⾏完后,才能继续执⾏原来的批处理,语法如下:

call 指定批处理文件

11. assoc 和 ftype

assoc 和 ftype 可实现文件关联,语法如下:

assoc .txt	::显示.txt代表的“文件类型”,结果显⽰.txt=txtfile
ftype		::显示所有的文件类型关联

assoc .txt=Word.Document.8  ::设置.txt文件未word类型的文档,可看到.txt文件图标已改变

12. pushd 和 popd

主要用于保存并返回初始目录,示例如下:

cd /d d:\mp4 	::更改当前⽬录为 d:\mp4
pushd c:\mp3 	::保存当前⽬录,并切换当前⽬录为 c:\mp3
popd 			::恢复当前⽬录为刚才保存的 d:\mp4

13. if

条件判断语句,语法如下:

if [not] errorlevel number command
if [not] str1==str2 command
if [not] exist filename command

14. mode

@echo off
mode con: cols=80 lines=30

echo This is a sample batch script.
echo It sets the console window size to 80 columns by 30 lines.
pause

四、常用特殊符号

1. @

用在任何命令前面,实现关闭当前行的回显.

2. %

%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*为命令⾏传递给批处理的参数
%0 批处理⽂件本⾝,包括完整的路径和扩展名
%1 第⼀个参数
%9 第九个参数
%* 从第⼀个参数开始的所有参数

%~dp0:批处理本身所在的路径

3. >

DOS的标准输⼊输出通常是在标准设备键盘和显⽰器上进⾏的,利⽤重定向,可以⽅便地将输⼊输出改向磁盘⽂件或其它设备。其中:

⼤于号 > 将命令发送到⽂件或设备,例如打印机>prn
双⼤于号 >> 将命令输出添加到⽂件结尾⽽不删除⽂件中已有的信息
⼩于号 < 从⽂件⽽不是键盘上获取命令所需的输⼊
>& 符号将输出从⼀个默认I/O流(stdout,stdin,stderr)重新定向到另⼀个默认I/O流

4. >>

>> 和 > 有点类似,但他们的区别是 >> 是传递并在⽂件的末尾追加,⽽ > 是覆盖。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

时时三省

网络乞丐,在线乞讨。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值