【由一个简单的删除文件名指定字段来看批处理的“for /f“文法】

bat文件相关知识

删除文件名中的指定字符:

@echo off
rem !a! 是变量的意思 正常的应该是 %a% 你这是在启动了延迟变量的情况下就要将%改为!号
rem %%i 应该是for中的语句,通过for设的变量
setlocal enabledelayedexpansion
set /p str=enter the delete string:
for /f "delims=" %%a in ('dir /a-d/b *.avi*') do (
  set new=%%~a
  ren "!new!" "!new:%str%=!")
@echo delete success
pause
  1. setlocal enabledelayedexpansion:允许变量延迟扩展,在for等语句中用%a%语法读取变量一直是初始值(即使你在for语句里面改变了变量的值) ;变量延迟扩展用!a! 感叹号代替百分号读取变量的值,取出的是变量的实时值。
  2. echo 和@echo的区别
    echo: 会在shell中显示echo这条命令和后面要输出的内容
    @echo: 不会显示echo这条命令,只会显示后面要输出的内容
  3. set的主要作用是赋值
    set /p a=promptstring
    先显示promptstring,再接受用户输入的内容,以回车表示结束,赋值给变量a
    set /p a=promptstring<1.txt
    先显示promptstring,再把"<“管道号右边的1.txt文件中从第一个字符开始直到碰到回车符的内容赋值给变量a (通常表现为第一行)。
    set /p a=promptstring<nul
    先显示promptstring,再把”<"管道号右边nul中内容赋值给变量a ,不用用户按回车就结束语句。因nul是空设备,故没有内容可赋值,变量a仍属未定义。
    4.dir /a-d/b *.avi
    /a-d 显示文件
    /a d 显示目录
    /b 显示文件名、扩展名
    5.delims=符号集 分隔符
    空格默认作为分隔符
@echo off
for /f "delims=" %%a in ('dir /a-d/b *.avi*') do echo %%a
pause>nul

运行拮果:

当前目录下所有的avi视频文件的文件名

讲解:
“delims=”代表取消默认以空格作为分隔符。
批处理默认空格是分隔符,分隔符会隐藏第一个分隔符后面的所有内容。为了显示完整的信息,所以有必要取消该功能。
因此,当文件名或路径中含有空格时,需要用双引号括住。如果不使用双引号,括号内的内容将被当做文件名,如果文件名不存在,将提示“系统找不到……”。
如果不使用“delims=”,即使使用双引号,也只能显示第一个空格前面的字符串,后面的字符串将被默认忽略。

“For /f”:解析文本,读取字符串。

“For /f”常用来解析文本,读取字符串。分工上,delims负责切分字符串,而tokens负责提取字符串。如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕。
1.Delims的语法:
FOR/F “Delims=符号集” %%I IN (Command1) DO Command2
忽略分隔符,切分字符串
2.Tokens的语法:
FOR/F “tokens=xym-n” %%I IN(Command1) DO Command2
提取指定的列

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值