使用批处理文件删除最后n行从文件 [英] Deleting last n lines from file using batch file
本文介绍了使用批处理文件删除最后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屋!
查看全文