windows批处理删除文件第一行和最后一行

在知道里找到许多大大的回答,但我试了,若文件中间有空行的话,中间的空行也会被删掉,我想保留中间的空行,不知道哪位大神能给解决下,不胜感激!!!
若不行给个c程序也行

第1个回答  2015-09-13
@echo off&setlocal enabledelayedexpansion
set "f=1.txt"
for /f %%a in ('type "%f%"^|find /c /v ""') do set /a n=%%a-1
(for /f "skip=1 tokens=1* delims=:" %%a in ('findstr /n .* "%f%"') do (
    echo;%%b
    if "%%a" equ "%n%" goto :0
))>$
:0
move $ "%f%" >nul
pause

及时采纳回答

本回答被提问者采纳
第2个回答  2015-09-13
@echo off & setlocal enabledelayedexpansion
set "file=文件名"
(for /f "skip=1 tokens=1* delims=:" %%a in ('findstr/n .* "%file%"') do (
if defined line echo.!line!
set "line=%%~b" 
)) >#
move # "%file%"

追问

这个还是不行,中间有空行还是被删掉了,不过还是谢谢

追答

没删掉啊

追问

不可能吧,我在win10 和 xp里都试了。
例如
123321231

45645645
变成了 45645645 中间空行被删掉了呀
7898798 7898798

46546546

第3个回答  2015-09-13
@echo off&setlocal enabledelayedexpansion
set "f=1.txt"
for /f %%a in ('type "%f%"^|find /c /v ""') do set /a n=%%a-1
(for /f "skip=1 tokens=1* delims=:" %%a in ('findstr /n .* "%f%"') do (
    echo;%%b
    if "%%a" equ "%n%" goto :0
))>$
:0
move $ "%f%" >nul
pause

及时采纳回答

本回答被提问者采纳
第4个回答  2015-09-13
@echo off & setlocal enabledelayedexpansion
set "file=文件名"
(for /f "skip=1 tokens=1* delims=:" %%a in ('findstr/n .* "%file%"') do (
if defined line echo.!line!
set "line=%%~b" 
)) >#
move # "%file%"

追问

这个还是不行,中间有空行还是被删掉了,不过还是谢谢

追答

没删掉啊

追问

不可能吧,我在win10 和 xp里都试了。
例如
123321231

45645645
变成了 45645645 中间空行被删掉了呀
7898798 7898798

46546546

相似回答
大家正在搜