batch批处理学习总结

关键词


set、for、函数定义、变量延迟、字符串处理、特殊用例技巧


一、set设置变量

1、不带参 直接脚本内设置变量
set a=num
echo %a%
2、/p参数接受用户输入
set /p argv="请输出参数"

echo %argv%
3、/a 参数可进行数学计算
**不做初始化变量默认为0**
set a=5 //从0开始加可以省略
set /a a+=1
注意如果需要在for里使用set改变变量需要用到变量延迟

注意:设置变量延迟才能在for循环里使用set

rem 变量延迟
setlocal enableDelayedExpansion

for /L %%a in (D:\*) do (
	set a+=1
	echo %a%
)

二、for 循环语句

说在前头

  • for不能嵌套
  • for 的变量格式为 %%[A-aZ-z]

顺便一提

  • %0是文件名 %[1-9]是对应的传参

摘要:

for有五种用法 /L /D /R /F 和不带参

  • for /l %%[A-Za-z] in (start,step,end) do (做事情)
  • for /d %%[A-Za-z] in (格式匹配) do (做事情)
  • for /r 路径 %%[A-Za-z] in (格式匹配) do (做事情)
  • for /f [options[ tokens取第几列 | delims以什么为间隔字符 ]] %%[A-Za-z] in (格式匹配) do (做事情)
1、/l 用于进行有规律的“数组”变量变量
for /l %%i in (5,-1,1) do (echo %%i)
rem 会输出
rem 5
rem 4
rem 3
rem 2
rem 1
2、 /d 用于遍历指定目录所有文件夹

注意:输出的%%a是包含D:\的完整路径,可以自己打印来看看

rem 打印D:\下一层所有文件名
for /d %%a in (D:\*) do (echo %%a)
3、 /r 递归地变量所有符合 in里格式的文件名

注意:不加路径就会以所在路径

rem 打印d盘所有.txt文件
for /r D:\ %%i in (*.txt) do (echo %%i)
4、 /f 主要是处理文件里的内容

注意:只能处理指定文件,不能用通配符,不然会报错

@echo off
setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%i in (新建文本文档.txt) do (
	set /a a+=1
	echo !a!
	rem echo %%i
)

三、函数定义

注意:函数以冒号标签开头goto:eof结尾,goto:eof会认为走到脚本末尾从而结束脚本

:start
echo its started
goto:eof

四、变量延迟

就这句写在开头
setlocal enabledelayedexpansion
很好记 enable启动 delayed延时 expansion扩展

五、截取、替换、合并字符串

这部分是转载自,学习的时候看到就一起合并了当做笔记 原文https://www.jb51.net/article/52744.htm

1、截取字符串

  • 格式例子
  @echo off
  set ifo=abcdefghijklmnopqrstuvwxyz0123456789
  echo 原字符串(第二行为各字符的序号):
  echo %ifo%
  echo 123456789012345678901234567890123456
  echo 截取前5个字符:
  echo %ifo:~0,5%
  echo 截取最后5个字符:
  echo %ifo:~-5%
  echo 截取第一个到倒数第6个字符:
  echo %ifo:~0,-5%
  echo 从第4个字符开始,截取5个字符:
  echo %ifo:~3,5%
  echo 从倒数第14个字符开始,截取5个字符:
  echo %ifo:~-14,5%
  pause
  • 截取时间字符的用例
@echo off
  echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
   pause

2、替换字符串

@echo off
  set aa=伟大的中国!我为你自豪!
   echo 替换前:%aa%
  echo 替换后:%aa:中国=中华人民共和国%
  echo aa = %aa%
  set "aa=%aa:中国=中华人民共和国%"
  echo aa = %aa%
  pause

3、字符串合并

  @echo off
  set aa=伟大的中国!
   set bb=我为你自豪!
   echo %aa%%bb%
  echo aa=%aa%
  echo bb=%bb%
  set "aa=%aa%%bb%"
  echo aa=%aa%
  pause

复制回去调试调试就懂了


六、特殊技巧记录

  • 以后有其他特殊使用技巧都会追加在这里

1、当你用for的时候需要截取部分变量的部分字符串的时候

setlocal enabledelayedexpansion
for /r %%i in (*g1.txt) do (
	set a=%%i
	rem 截取五个倒数五个字符
	echo !a:~-5!	
)
pause

闲聊

20200105
我用批处理主要是用来有规律的复制移动一些文件还有重命名
话说最近入职一家游戏公司,无论是发布还是处理游戏场景资源文件、发现很多需要操作window文件和写入的操作,重复性比较高,就开始想用批处理,节省下来的时间专注开发游戏极大减少自己的不必要工作量,俗话说的好磨刀不误砍柴工,时代在进步,能自动化的尽量不手动。
我以前的话可能更推荐用python,是,跨平台、很好用的脚本语言,但又觉得相较于简单的重复性的工作真的有必要大炮打蚊子吗,没有最好的,只有最合适。


最后还是想吐槽下公司的996,说实话995还能接受,双休很重要!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值