【BAT】bat批处理笔记

1. @echo off

@echo off:关闭回显,执行后不会一条一条的显示执行的命令,与之相匹配的有@echo on

未关闭回显
echo hahaha
pause

关闭回显

2. pause

pause 暂停命令,执行时会在命令行窗口显示“请按任意键继续...”,并等待你按键;

pause > nul 暂停命令,只是不会显示“请按任意键继续...”

3. echo

echo:输出命令,在命令窗口中输出内容,在echo后的任何内容都会输出,无需使用单引号或双引号

4. 设置变量 set    set /a    取变量 !变量名!

  • 设置变量  set n=1 ; 设置变量n,并初始化为1;
  • 取变量的值:使用 “!变量名!”的方法获取变量的值,使用双感叹号的方式,需在执行文件前加上 @echo off&setlocal enabledelayedexpansion 
  • set /a : 执行数学计算    set /a n+=1   执行n=n+1
  • set /p : 提示用户数        set /p n=输入:

@echo off&setlocal enabledelayedexpansion   rem 如要是使用双感叹号取变量的值,这句是必须的

set n=1                   rem 声明变量n并初始化为1
set /p n=输入:      rem 提示用户输入,并将用户输入的值赋给变量n
set /a n+=1             rem 执行数学计算n=n+1,“+=” 相当于“=n+1”
echo !n!                  rem  显示变量n的值

pause > nul

在循环体内使用变量需要启用变量延迟setlocal enabledelayedexpansion

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 10) do (
set var=%%i
echo !var! 启用延缓环境变量
echo %var% 未启用延缓环境变量
)

5. 去掉第n个字符,去掉最后n个字符,截取几位数

去掉前n个字符  :~

去掉后n个字符  :~0,-字符数

从第几个字符开始截取一定的长度  :~1,2  从第1位(索引位从0开始)开始截取2个字符

从第几个字符开始截取一定的长度  :~1,-2  前面去掉1位数,后面去掉2位数(这段理解不清楚)

取最后的n位数

%变量:~-n%

从后开始,去掉最后的n位数

%变量:~,-n%

6. 注释符号   rem  或  ::

7. 重定向 >

> ,将“>” 左侧命令执行的结果 写入 “>” 右侧的文件中,若文件不存在则自动创建文件。

@echo off&setlocal enabledelayedexpansion 
dir /s /l /b > 2.txt
pause > nul

罗列当前及子目录下的所有文件(及目录),写入到2.txt文档中。

8. md 创建目录    

md 123     创建一个名为123的文件夹

9. 批处理符号  |  &  &&   || 

  • &  command1 & command2  命令连接符,用来分隔一个命令行中的多个命令,先运行第一个命令,再运行第二个命令

   @echo 第一个命令&@echo 第二个命令

  • &&  command1 && command2   只有在&&前面的语句command1运行成功,则运行&&后面command2的语句
  • ||     command1 || command2      只有在|| 前面的语句command1运行失败后,才运行 || 后面的command2的语句
  • |    管道符,就是让前一命令的输出当做后一命令的输入,即前一命令的结果当做一个参数传递给后面命令进行处理

10. goto 跳转到特定行

  • goto:eof  相当于exit,结束程序
  • goto:特定标签, 跳转到其他命令行语句
@echo off
set /p input=请输入字母A或B: 
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause 
exit 

:A
echo 您输入的字母是A
pause
exit 

:B
echo 您输入的字母是B 
pause 
exit 

11. CALL  调用程序段

调用程序段(函数),可传递参数

@echo off

for /l %%i in (1001,1,1017) do (
call :MDIR %%i  rem 传递实参
)
goto:eof

:MDIR
set b=%1  rem 获取第一个形参的值并赋给变量b
md "hello %b:~1,4%" 

12. move 移动文件或文件夹

@echo off
move G:\YFYF\10年\2012-10年-379 G:\YFYF\10年\2004
pause

13. md 创建目录

@echo off
for /l %%i in (1,1,10) do (
                  md G:\批处理练习\1\%%i
                          )
pause

14. md 创建目录

1>nul 意思是不显示命令运行的正确提示
2>nul 是不显示错误提示
一起就是 正确错误的都不显示
>是重定向符号
nul是空设备的意思
把提示输入到空设备就不显示了

重定向你可以理解为 输入到 的意思

15. for 循环中的 /r /d 扩展参数

  • /r : 主要用于搜索指定路径及其子目录中符合要求的文件,(\r后如果没有指定目录,则使用当前目录)

  • /d:用于搜索目录或文件夹(不搜索文件),并且不会搜索子目录

 

  • 获取特定路径下的目录名,注意特定路径的斜杠方向,路径名不能为中文

      for /d %%i in (C:/Users/pytxf/Desktop/SAOMIAO/*) do echo %%i 

  • 获取当前目录下的特定文件夹下的目录名

      for /d %%i in (图片列表/*) do echo %%i 

     for /f "delims=" %%a in ('dir /ad/b "新扫描件"') do (

  •  

 

16. dir 获取当前目录下的文件或文件夹

  1. dir: 获取当前目录下的文件或文件夹,包含文件的时间、大小、文件名;
  2. dir /b: 获取当前目录下的文件或文件夹,去掉文件的大小、时间属性,仅获取名称;
  3. dir /ad/b  或dir /a:d/b : 获取当前目录下的目录名。(不获取文件名)
  4. dir /a-d/b 或 dir /a:a/b:获取当前目录下的文件名。(不获取目录名)
  5. dir /s/b: 获取当前目录及子目录下的所有文件名或文件夹名
  6. dir /s/b 关键词或含通配符的关键词:查找名称包含关键词的所有文件名或文件夹名

17. %%~ni (这里的i是循环变量名,若循环变量为a,则相应的为%%~na)

  1. %%~ni: 代表文件名
  2. %%~xi: 代表文件扩展名
  3. %%~nxi: 代表文件名和扩展名,不包含盘符及路径信息
  4. %%~fi: 获取文件的整个路径及文件名
  5. %%~pi:表示获取该文件的路径,不包含盘符的信息
  6. %%~di:表示获取该文件所在的盘符
  7. %%~ti:表示获取该文件的上次修改时间
  8. %%~zi:表示获取该文件的大小

18. setlocal和endlocal

setlocal和endlocal一般是搭配使用的,setlocal和endlocal命令执行结果是让dao中间的程序对版于系统变量的权改变只在程序内起作用,不会影响整个系统级别。

19. 判断字符串是否包含某字符串

@echo off
set a=55544333
set c=6666dfsfds
set b=44
echo %a%| findstr %b% >nul && (
    echo %a%包含%b%
) || (
    echo %a%不包含%b%
)
echo %c%| findstr %b% >nul && (
    echo %c%包含%b%
) || (
    echo %c%不包含%b%
)

pause

20. pushd 和 popd

切换当前目录
@echo off
c: & cd\ & md mp3       #在 C:\ 建立 mp3 文件夹
md d:\mp4               #在 D:\ 建立 mp4 文件夹
cd /d d:\mp4            #更改当前目录为 d:\mp4
pushd c:\mp3            #保存当前目录,并切换当前目录为 c:\mp3
popd                    #恢复当前目录为刚才保存的 d:\mp4
一般用处不大,在当前目录名不确定时,会有点帮助。(dos编程中很有用)

 

 

 

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值