Batch file 如何使用批处理删除txt文件中倒数第二行?
我已经搜索了很多次这个网站,发现了很多相关的问题,但没有一个和我的问题完全一样,所以。。。我只需要删除txt文件(%txtfile%.txt)中倒数第二行,就这样了。之所以排在倒数第二位,是因为该文件是使用Batch file 如何使用批处理删除txt文件中倒数第二行?,batch-file,Batch File,我已经搜索了很多次这个网站,发现了很多相关的问题,但没有一个和我的问题完全一样,所以。。。我只需要删除txt文件(%txtfile%.txt)中倒数第二行,就这样了。之所以排在倒数第二位,是因为该文件是使用echo.Sample text>%txtfile%.txt“创建的,因此它在末尾留下了一行emty。现在我想删除除了空白行之外的最后一行。我该怎么做?你对最后一行的定义与我的不同。这对字符终止一行。在文件的末尾有一行被终止,后面没有任何内容。如果在文本编辑器中打开文件并转到文件末尾,光标将位
echo.Sample text>%txtfile%.txt“
创建的,因此它在末尾留下了一行emty。现在我想删除除了空白行之外的最后一行。我该怎么做?你对最后一行的定义与我的不同。这对字符
终止一行。在文件的末尾有一行被终止,后面没有任何内容。如果在文本编辑器中打开文件并转到文件末尾,光标将位于空行上。但该行不是当前文件的一部分。在我看来,最后一行是上面的那行
可以使用“查找”来确定行数。查找也不考虑在最后一行终止符后有一行。然后使用FINDSTR为每一行添加前缀,并将行号输送到第二个FINDSTR以过滤掉“最后”行。FOR循环读取输出,SET search and replace删除行号前缀。延迟扩展在循环中打开和关闭,以防止扩展%%L变量期间,如果在文件内容中发现代码>已损坏
@echo off
setlocal disableDelayedExpansion
set file="test.txt"
for /f %%N in ('find /c /v "" ^<%file%') do set skip=%%N
(
for /f "delims=" %%L in ('findstr /n "^" %file%^|findstr /v "^%skip%:"') do (
set "ln=%%L"
setlocal enableDelayedExpansion
echo(!ln:*:=!
endlocal
)
)>%file%.new
move %file%.new %file% >nul
@echo关闭
setlocal disableDelayedExpansion
set file=“test.txt”
对于/f%%N in('查找/c/v“”^很好,除了一件事……当我说从第二行到最后一行时,你可能误解了,因为如果我有一个文件在单独的行上说hello、wazzup和l8r,它将删除wazzup。我是想让它删除l8r,但因为有一个默认的额外空间,它需要跳过额外的空间…@VDgames-然后不要从行数中减去一个。我已经删除了编辑了我的答案。