rem 读取文本a.txt的内容,并按首行字母排序显示在控制台
sort<a.txt
rem 读取文本a.的内容,并按首行字母排序存放在当前目录的b.txt中
sort<a.txt>b.txt
set /p var=<file.txt
echo %var%
1.2.2. type显示文本内容
rem 读取并显示文本内容
type a.txt
rem 读取文本内容作为参数传递给sort
type a.txt |sort
2. 示例
2.1. 从文本中分离奇数行和偶数行
@echo off & title 隔行分拆为两个文件
setlocal enabledelayedexpansion
set C=3.txt
set B=2.txt
set A=1.txt
set Num=0
for /f "delims=" %%a in('type "%C%"')do(if!Num! equ 1 ((echo %%~a)>>"%B%"set Num=0
)else((echo %%~a)>>"%A%"set /a Num+=1
))
pause
2.2. 逐行合并两个文本
echo off & title 行插入合并为一个文件
setlocal enabledelayedexpansion
set A=a.txt
set B=b.txt
set C=c.txt
(for /f "delims=" %%a in('type "%A%"')do(set"Str_A=%%a"set Skip=skip=!Line!if"!Skip!"=="skip="set"Skip="
rem 利用skip跳列B文件指定行,"!Skip!"是命令行参数
call :GetStr_B "!Skip!"set /a Line+=1
echo!Str_A!echo!Str_B!))>"%C%"
pause
exit
:GetStr_B
for /f "%~1 delims=" %%b in('type "%B%"')do(set Str_B=%%b
rem 可以理解为退出当前for循环
goto :eof
)
rem 执行到最后
goto :eof
2.3. 遍历文本替换指定字符串
@echo off
echo %time%
(
rem delims指示分隔符,默认是空格和TAB
for /f "delims=" %%a in(test.txt)do(set str=%%a
setlocal enabledelayedexpansion
rem 空格替换成_
echo!str: =_!
endlocal
))>test_2.txt
echo %time%
pause
2.4. 操作多行文本
rem ()表示其中的命令是一次执行,所以可以用<>一次操作多行文本
(echo bcdefgdddddd
echo bcdefg
)>aaa.txt
(
setlocal enabledelayedexpansion
set /p str=echo!str!set /p str=echo!str!)<aaa.txt
pause
2.5. 合并多个文件
rem type是将文件内容输出到指定设备,默认到控制台
rem 将当前目录下所有txt合并到123.txt
type *.txt >123.txt
@echo off
setlocal enabledelayedexpansion
for /f %%a in('dir /b /s *.cpp *.h')do(set n=0
for /f "delims=" %%j in('type %%a ^| findstr /n "for" ')do(set /a n+=1
echo %%j
)echo!!n!)
2.8. 合并多行为一行
@echo off
setlocal enabledelayedexpansion
set"SrcFile=a.txt"set"DstFile=b.txt"set"MergeNum=16"set"Delimiter=,"
rem 清空目标文件
type nul>"%DstFile%"for /f "usebackq tokens=*" %%a in("%SrcFile%")do(set /a RowTotal+=1
set /a Count+=1
rem set后面加双引号,防止赋值的字符串中存在转义字符导致运行错误
set"RowMerge=!RowMerge!%Delimiter%%%a"if!Count! equ !MergeNum!(
echo,!RowMerge:~1!>>"%DstFile%"
rem 清除变量
set RowMerge=set Count=0
))set /a RowMod=RowTotal%%MergeNum
if!RowMod! equ 0 (
goto :end
)>>"%DstFile%" echo,!RowMerge:~1!
:end
2.9. 删除空行
@echo off
set /p stringName=filePath:
rem "^$"表示匹配空行, /v表示打印相反的,即打印非空行
findstr /v "^$" %stringName% > result.txt
pause
2.10. 删除包括指定内容的行
@echo off
set /p stringName=filePath:
rem 正则表达式大小写敏感,用空格分隔多个正则表达式
findstr /v ".for .For" %stringName% > result.txt
pause
2.11. 生成规律的文本
@echo off
setlocal enabledelayedexpansion
for /l %%a in(1,1,100)do(set /a num=1000+%%a
if %%a LSS 10 (echo #define IDC_BUTTON%%a !num!)else (if %%a LSS 100 (echo #define IDC_BUTTON%%a !num!)elseecho#define IDC_BUTTON%%a !num!))
pause
2.12. 通过截取修改文本内容
@echo off
setlocal enabledelayedexpansion
set num=1000
for /f "delims=" %%a in(c.txt)do(set /a num+=1
rem 防止%%识别成字符所以加""set"newText=%%a"
rem 截取前40个字符与数字合并
echo!newText:~0,40!!num!)
pause
2.13. 去掉重复内容
@echo off
rem 从A中读取一行与B中内容比较,没有则存放进B文件中
for /f "delims=" %%i in(A.txt)do(find /i "%%i" B.txt ||echo %%i>>B.txt
)