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
)