当前位置: 首页 > 知识库问答 >
问题:

使用批处理文件从文件中删除最后n行

常雅珺
2023-03-14

如何使用批处理脚本从文件中删除最后n行

我对批处理文件没有任何想法,我是第一次编写批处理文件

我应该如何编写此批处理文件?

对于Windows7

试一试

<Project_Name>

    <Noter>
        <Common>
        <File>D:\Project_Name\Util.jar</File>
        <File>D:\Project_Name\Noter.bat</File>
        <File>D:Project_Name\Noter.xml</File>
        <File>D:Project_Name\Noter.jar</File>       
        </Common>

        <Project_Name>
            <File>D:\Util.bat</File>
            <File>D:\Util.xml</File>
            <File>D:\log.bat</File>
        </Project_Name>
    </Noter>
    <CCNET>

共有3个答案

冷宏茂
2023-03-14

要从文件中删除最后一行,

从文件(如 from- e:\original)中复制 1 个起始行.txt 2 个将它们粘贴到新文件中,如 e:\new\newfile1.txt

代码感谢给我这个代码的人:记住,如果你有动机,甚至血液hb=6,一切都可以完成。但大自然的帮助总是需要的,因为你是其中的一部分

@回声关闭

e:\new4.txt echo.%a ) :d id

如果你有800个文件,然后使用excel为800编写代码,然后将其复制到记事本,并使用Ctrl h将空格替换为没有空格的空格。然后将文件重命名为haha.bat。在文件夹中运行,文件编号为1.txt2.txt3.txt等。任何询问者欢迎Erkamaldev@gmail.com“印度万岁”

石喜
2023-03-14

该脚本将接受1个参数,即要中继的文件,创建一个临时文件,然后用较短的文件替换原始文件。

@echo off
setlocal enabledelayedexpansion
set count=
for /f %%x in ('type %1 ^| find /c /v ""') do set /a lines=%%x-5
copy /y nul %tmp%\tmp.zzz > nul
for /f "tokens=*" %%x in ('type %1 ^| find /v ""') do (
  set /a count=count+1
  if !count! leq %lines% echo %%x>>%tmp%\tmp.zzz
)
move /y %tmp%\tmp.zzz %1 > nul

如果原始文件为5行或更少行,则主输出例程将不会创建文件。为了解决这个问题,我使用<code>copy/y null<code>来创建一个零字节文件。

如果您不想有一个空文件,只需删除复制 /ynul行,并将其替换为以下行:

if %lines% leq 0 del %1

您应该使用一种方法或另一种方法,否则行数不超过 5 行的源文件将保持不变。(既不替换也不删除。

弓磊
2023-03-14

这是删除最后N行的完整脚本

  • 统计总行
  • 设置Line=Line-N,只保留处理行号
@echo OFF
setlocal EnableDelayedExpansion

set LINES=0
for /f "delims==" %%I in (infile.txt) do (
    set /a LINES=LINES+1    
)

echo Total Lines : %LINES%
echo.

:: n = 5 , last 5 line will ignore 
set /a LINES=LINES-5

call:PrintFirstNLine > output.txt

goto EOF

:PrintFirstNLine
set cur=0
for /f "delims==" %%I in (infile.txt) do (      
    echo %%I        
    ::echo !cur! : %%I      
    set /a cur=cur+1    
    if "!cur!"=="%LINES%" goto EOF
) 

:EOF 

exit /b

这里调用:PrintFirstNLine

示例输入的输出

<Project_Name>      
<CBA_Notifier>      
    <Common>        
    <File>D:\CBA\CBA_Notifier\Project_Name\IPS-Util.jar</File>      
    <File>D:\CBA\CBA_Notifier\Project_Name\Notifier.bat</File>      
    <File>D:\CBA\CBA_Notifier\Project_Name\Notifier.xml</File>      
    <File>D:\CBA\CBA_Notifier\Project_Name\Notifier.jar</File>              
    </Common>       
    <Project_Name>      
        <File>D:\CBA\CBA_Notifier\IPS-Util.bat</File>   

删除最后5行

更新

:PrintFirstNLine
set cur=0
for /F "tokens=1* delims=]" %%I in ('type "infile.txt" ^| find /V /N ""') do (
   if "%%J"=="" (echo.) else (
        echo.%%J
        set /a cur=cur+1    
        )  

   if "!cur!"=="%LINES%" goto EOF
)

 类似资料:
  • 问题内容: 我想从文件末尾删除一些 n 行。可以使用sed完成此操作吗? 例如,要删除2到4行,我可以使用 但是我不知道行号。我可以使用删除最后一行 但我想知道从末尾删除 n 行的方法。请让我知道如何使用sed或其他方法进行操作。 问题答案: 我不知道,但是可以用:

  • 问题内容: 在spring batch中,我正在使用MultiResourceItemReader从目录中读取多个文件。然后,我使用FlatFileItemReader作为委托来处理单个文件。我的用例是,一旦文件被完全处理(READ- WRITE完成),则将其删除,然后multiResourceitemReader必须选择另一个文件并继续。 我尝试了FileDeletingTasklet删除目录中

  • 本文向大家介绍从PHP中的文件中删除最后一行,包括了从PHP中的文件中删除最后一行的使用技巧和注意事项,需要的朋友参考一下 从文件中删除最后一行是一个简单的过程,只需几行代码即可完成。 此脚本中方法的局限性在于,如果文件很大,则将整个文件传递到数组中将占用大量内存,从而有可能导致服务器崩溃。最好的方法不是执行此操作,而是从文件末尾开始直到找到第一个换行符为止。以下脚本将一次咬掉50个字符,直到找到

  • 问题内容: 如何使用python删除文件的最后一行? 输入文件示例: 输出文件示例: 我创建了以下代码来查找文件中的行数-但我不知道如何删除特定的行号。 问题答案: 您可以使用上面的代码,然后: 这将为您提供包含除最后一行以外的所有行的行数组。

  • 我已经创建了一个批处理文件,将文件名中带有xxxx*的文件移动到临时文件夹,然后使用第二个命令forfiles删除原始目录中早于xx天的任何文件,然后使用robocopy/MOVE将所有其他文件移回原始目录。是否有一种方法可以运行forfiles命令从原始控制器中删除所有早于-xx天的文件,但名称中包含xxxx*的文件除外,而无需来回移动文件? 我的原始代码是:

  • 问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。