求bat批处理提取多个文本文件的第一行和最后一行,输出并保存到ok.txt。诚心感谢帮忙。谢谢。

如题所述

@echo off&setlocal enabledelayedexpansion
cd .>ok.txt
for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
set out=1
if /i not "%%~nxa"=="ok.txt" (
for /f "usebackq delims=" %%b in ("%%~a") do (
set "line=%%a"
if defined out (
echo %%a >>ok.txt
set out=
)
)
)
echo !line! >>ok.txt
)

提取当前文件夹下文本文件的第一行和最后 一行,输出到ok.txt,

追问

这个我试了,没成功,只提取了文件名,并没有提取到文本内容,谢谢

追答@echo off&setlocal enabledelayedexpansion
cd .>ok.txt
for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
set out=1
if /i not "%%~nxa"=="ok.txt" (
for /f "delims=" %%b in ('findstr  /r /c:"[^ ]" "%%~a"') do (
set "line=%%b"
if defined out (
echo %%a >>ok.txt
set out=
)
)
)
echo !line! >>ok.txt
)

难道连第一行都没提取到,刚才只是把最后一行的代码写错了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-02-22
文本大不大,第一行和最后一行是否可能是空行,空行要怎么处理,说清楚点。追问

文件不大,每个文件不超过500行,有可能有空行。如果第一行是空行自动取下一行,如果最后一行是空行,去上面的有值的那一行,谢谢

追答@echo off
(for %%i in (*.txt) do (
    setlocal enabledelayedexpansion
    for /f "usebackq delims=" %%a in ("%%i") do (
        if defined . (set .=%%a)else set .=.&echo,%%a
    )
    echo,!.!
    endlocal
))>ok.txt

本回答被提问者采纳
相似回答