版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1 for 语句
显示当前目录下txt文件:
FOR %%variable IN (set) DO command [command-parameters]
@echo off
for %%i in (*.txt) do echo %%i
pause
结果:
2 for /f用法
1)for /f %%i in (文件名) do (……)
2)for /f %%i in (‘命令语句’) do (……)
3)for /f %%i in (“字符串”) do (……)
1、for /f
显示TEXT.TXT内容
@echo off
for /f %%i in (test.txt) do echo %%i
pause
2、分割、切片"delims= " 用法,主要用于提取第1节内容
以,号分割TXT文件,下表是提取,号前的字段
echo off
for /f "delims=," %%i in (test.txt) do echo %%i
pause
源TEST.TXT内容:
我是一个学生,我今年20岁,家住广州.
你是一个好人!谢谢。
执行结果:
3、tokens= 数字 用法
前面提到"delims= "只能提取第1节的字段,当想提取中间或最后一节,需要用到"tokens= "只能跟数字,代表第1、2、3节意思,如tokens= 2代表,第2节。
PS:若同时选择多节,请在使用:在…tokens=2,3…ecnho %%i %%j…
@echo off
for /f "delims=, tokens=2" %%i in (TEST.TXT) do echo %%i
pause
运行结果:
4、 skip=n用法
for /f 允许跳过无用的行,直接从第N+1行开始处理,参数 skip=n,其中,n是一个正整数,表示要跳过的行数。
echo off
for /f "skip=2" %%i in (TEST.TXT) do echo %%i
pause
5、eol= 用法
忽略以指定字符打头的行:
echo off
for /f "eol=," %%i in (TEST.TXT) do echo %%i
pause
6、变量延迟
setlocal enabledelayedexpansion
统计并显示当前目录下TXT文件数
"dir /ad /b /s“路径
@echo off
setlocal enabledelayedexpansion
set num=0
for /f %%i in ('dir /a-d /b *.txt') do (
set /a num+=1
echo num !num!)
echo 当前目录下一共有 %num% 个TXT文件
pause
3 for /L
循环执行
echo off
for /l %%i in (1,1,10) do echo ok
pause
4 FINDSTR查找
在文件中寻找字符串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为正则表达式使用。
/S 在当前目录和所有子目录中搜索匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
[drive:][path]filename
指定要查找的文件。
除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there"。'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
"hello there"。
正则表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类出现零或零以上次数
^ 行位置: 行的开始
$ 行位置: 行的终点
[class] 字符类: 任何在字符集中的字符
[^class] 补字符类: 任何不在字符集中的字符
[x-y] 范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束
echo off
findstr /b /i "OptionalFeatureLicenseId" *.log>>test.txt
pause