Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何使用批处理删除txt文件中倒数第二行?_Batch File - Fatal编程技术网

Batch file 如何使用批处理删除txt文件中倒数第二行?

Batch file 如何使用批处理删除txt文件中倒数第二行?,batch-file,Batch File,我已经搜索了很多次这个网站,发现了很多相关的问题,但没有一个和我的问题完全一样,所以。。。我只需要删除txt文件(%txtfile%.txt)中倒数第二行,就这样了。之所以排在倒数第二位,是因为该文件是使用echo.Sample text>%txtfile%.txt“创建的,因此它在末尾留下了一行emty。现在我想删除除了空白行之外的最后一行。我该怎么做?你对最后一行的定义与我的不同。这对字符终止一行。在文件的末尾有一行被终止,后面没有任何内容。如果在文本编辑器中打开文件并转到文件末尾,光标将位

我已经搜索了很多次这个网站,发现了很多相关的问题,但没有一个和我的问题完全一样,所以。。。我只需要删除txt文件(%txtfile%.txt)中倒数第二行,就这样了。之所以排在倒数第二位,是因为该文件是使用
echo.Sample text>%txtfile%.txt“
创建的,因此它在末尾留下了一行emty。现在我想删除除了空白行之外的最后一行。我该怎么做?

你对最后一行的定义与我的不同。这对字符
终止一行。在文件的末尾有一行被终止,后面没有任何内容。如果在文本编辑器中打开文件并转到文件末尾,光标将位于空行上。但该行不是当前文件的一部分。在我看来,最后一行是上面的那行

可以使用“查找”来确定行数。查找也不考虑在最后一行终止符后有一行。然后使用FINDSTR为每一行添加前缀,并将行号输送到第二个FINDSTR以过滤掉“最后”行。FOR循环读取输出,SET search and replace删除行号前缀。延迟扩展在循环中打开和关闭,以防止
已损坏

@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-然后不要从行数中减去一个。我已经删除了编辑了我的答案。