使用批处理文件删除最后n行从文件 [英] Deleting last n lines from file using batch file

查看:276
本文介绍了使用批处理文件删除最后n行从文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我没有关于批处理文件的任何想法,我写批处理文件的第一次。

我应该如何写这个批处理文件?

有关Windows7的

你可以尝试

 <&PROJECT_NAME GT;    < CBA_Notifier>
        <公共和GT;
        <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ IPS-Util.jar< /文件>
        <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.bat< /文件>
        <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.xml< /文件>
        <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.jar< /文件>
        < /通用>        <&PROJECT_NAME GT;
            <文件> D:\\ CBA \\ CBA_Notifier \\ IPS-Util.bat< /文件>
            <文件> D:\\ CBA \\ CBA_Notifier \\ IPS-Util.xml< /文件>
            <文件> D:\\ CBA \\ CBA_Notifier \\ * BuildLog.bat< /文件>
        < / PROJECT_NAME>
    < / CBA_Notifier>
    <&CCNET GT;


解决方案

这对于拆下整个脚本最后N线


  • 计算总行

  • 设置线=行 - N,仍然只是加工流水线数

  @echo OFF
SETLOCAL EnableDelayedExpansion套系= 0
FOR / Fdelims ==%%我在(infile.txt)做(
    集/一个线路=行+ 1
)回声行总数:%LINES%
回声。:: N = 5,最后5行会忽略
集/一个LINES =行-5拨打:PrintFirstNLine> output.txt的转到EOF:PrintFirstNLine
设置CUR = 0
FOR / Fdelims ==%%我在(infile.txt)做(
    回声%%我
    ::回声!CUR! : %%一世
    集/一个CUR = CUR + 1
    如果!CUR!==%LINES%转到EOF
):EOF退出/ B

下面电话:PrintFirstNLine> output.txt的将给出一个外部文件名的输出的 output.txt的

输出作为样本输入

 <&PROJECT_NAME GT;
< CBA_Notifier>
    <公共和GT;
    <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ IPS-Util.jar< /文件>
    <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.bat< /文件>
    <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.xml< /文件>
    <文件> D:\\ CBA \\ CBA_Notifier \\项目名\\ Notifier.jar< /文件>
    < /通用>
    <&PROJECT_NAME GT;
        <文件> D:\\ CBA \\ CBA_Notifier \\ IPS-Util.bat< /文件>

删除最后5号线

更新

 :PrintFirstNLine
设置CUR = 0
FOR / F令牌= 1 * delims =]我%%中(类型infile.txt^ |找到/ V / N')做(
   如果%% J==(回声)其他(
        呼应。%%Ĵ
        集/一个CUR = CUR + 1
        )   如果!CUR!==%LINES%转到EOF

How to delete last n lines from file using batch script

I don't have any idea about batch files, I am writing batch file for the first time.

How should I write this batch file?

For Windows7

Try it for

<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>
            <File>D:\CBA\CBA_Notifier\IPS-Util.xml</File>
            <File>D:\CBA\CBA_Notifier\*BuildLog.bat</File>
        </Project_Name>
    </CBA_Notifier>
    <CCNET>

解决方案

This the complete script for remove last N line

  • count the total line
  • set Line = Line - N , remain just processing lines number

@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

Here call:PrintFirstNLine > output.txt will give the output in an external file name as output.txt

Output for sample Input

<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>   

remove last 5 line

Update

: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行从文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆