批处理批量提取文本指定行
有一个文件夹下有很多文本,文件名不一样(比如a.txt123.txta3.txt等),但文本内容的格式都是按照规定格式填写的(比如第一行是日期,第二行是姓名,第三行是年龄...
有一个文件夹下有很多文本,
文件名不一样(比如a.txt 123.txt a3.txt等),
但文本内容的格式都是按照规定格式填写的(比如第一行是日期,第二行是姓名,第三行是年龄),
现在我要把所有文本的第五行提取出来并且并且保存到一个文本中 展开
文件名不一样(比如a.txt 123.txt a3.txt等),
但文本内容的格式都是按照规定格式填写的(比如第一行是日期,第二行是姓名,第三行是年龄),
现在我要把所有文本的第五行提取出来并且并且保存到一个文本中 展开
5个回答
展开全部
@echo off
del new_files.txt >nul 2>nul
for /f "tokens=*" %%i in ('dir /a-d /b *.txt') do (
for /f "skip=4 tokens=*" %%j in (%%i) do (
echo %%j))>>new_files.txt
start "" "new_files.txt"
在文本文档所在的目录运行,不处理子文件夹(重点你没有要求)
del new_files.txt >nul 2>nul
for /f "tokens=*" %%i in ('dir /a-d /b *.txt') do (
for /f "skip=4 tokens=*" %%j in (%%i) do (
echo %%j))>>new_files.txt
start "" "new_files.txt"
在文本文档所在的目录运行,不处理子文件夹(重点你没有要求)
追问
这个是把第五行和下面的都提取出来了,但是我只要第五行
追答
@echo off & setlocal enabledelayedexpansion
del new_files.txt >nul 2>nul
for /f "tokens=*" %%i in ('dir /a-d /b *.txt') do call :out "%%i"
start "" "new_files.txt"
exit
:out
set "n=0"
for /f "usebackq tokens=*" %%j in ("%~1") do (
set /a n+=1
if !n! equ 5 echo %%j
)>>new_files.txt
goto :eof
这样有空格的文本也可以处理了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
行还是列?
我当列了啊!
要放在同一文件夹哦!
@echo off
for /f "tokens=5 delims=" %%i in (*.txt) do (
echo %%i>>temp.txt
)
start temp.txt
pause
我当列了啊!
要放在同一文件夹哦!
@echo off
for /f "tokens=5 delims=" %%i in (*.txt) do (
echo %%i>>temp.txt
)
start temp.txt
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off
for /f "delims=" %%a in ('dir/b *.txt') do call:wr,"%%a"
echo Complete!&pause&start/max "" ok.txt&exit
:wr
(for /f "skip=4 delims=" %%b in ('type "%~1"') do (
echo %%b&goto:eof))>ok.txt
ps.前5行有空行的情况吗?如果有代码将会忽略。
for /f "delims=" %%a in ('dir/b *.txt') do call:wr,"%%a"
echo Complete!&pause&start/max "" ok.txt&exit
:wr
(for /f "skip=4 delims=" %%b in ('type "%~1"') do (
echo %%b&goto:eof))>ok.txt
ps.前5行有空行的情况吗?如果有代码将会忽略。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议利用第三方工具sed.exe来实现效率比较高。
@echo off
(for /f "tokens=*" %%i in ('dir/b *.txt') do sed -n '5p' "%%i")>new.txt
@echo off
(for /f "tokens=*" %%i in ('dir/b *.txt') do sed -n '5p' "%%i")>new.txt
参考资料: http://gnuwin32.sourceforge.net/packages/sed.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%a in (dir/b d:\111) do (
for /f "skip=4 delims=" %%b in (%%a) do (
set n+=1
if !n! neq 1 echo %%b>>temp.txt))
for /f "delims=" %%a in (dir/b d:\111) do (
for /f "skip=4 delims=" %%b in (%%a) do (
set n+=1
if !n! neq 1 echo %%b>>temp.txt))
追问
运行后提示:
系统找不到文件 dir/b。
追答
...
(dir/b d:\111)改为('dir/b d:\111 *.txt‘)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询