【问题标题】:Batch: Read a txt file and output the last 10 lines a comma separated line批处理:读取一个 txt 文件并将最后 10 行以逗号分隔的行输出
【发布时间】:2017-01-11 13:53:05
【问题描述】:

我有一个简单的批处理文件,它从批处理文件中读取最后 10 行,然后将这 10 行输出为一个新的 txt 文件,但我需要将其输出为逗号分隔的行/字符串。

@echo off
for /f %%i in ('find /v /c "" ^< C:\Path To File\File.txt') do set /a lines=%%i
set /a startLine=%lines% - 10
more /e +%startLine% C:\Path To File\File.txt > Output.txt

另外,是否可以在新的 txt 文件中反转行顺序,使最后一行位于逗号分隔行的开头

我所追求的示例:

第一行
第2行
第3行
第4行

输出为

line4, line3, line2, line1

【问题讨论】:

  • 只需使用另一个 FOR /F 来解析 MORE 命令的输出,而不是将其重定向到文件。然后不要创建变量并附加到它,只需将新行添加到开头即可。
  • for /F "delims=" %%a in ('more /e +%startLine% "C:\Path To File\File.txt"') do set "output=%%a, !output!"echo %output:~0,-2%。开头别忘了setlocal EnableDelayedExpansion...
  • 只是一点点信息。如果您的文件超过 65,534 行,则此代码将失败,因为 MORE 命令将在该点暂停。
  • 感谢 Squash 和 Aacini 的回复,我使用下面的 powershell 只是因为行数限制和未来的校对,但你的也可以工作

标签: batch-file


【解决方案1】:

这个小的 powershell 脚本会做:

$Lines = Get-Content .\Lines.txt|select -last 10
($Lines[($Lines.Length-1)..0]) -join(', ')|Set-Content Lines-new.txt

成批讨论主题:

@echo off
Powershell -command "($Lines=GC .\Lines.txt|select -last 10);(($Lines[($Lines.Length-1)..0]) -join(' ')|Set-Content Lines-New.txt)"

【讨论】:

  • 我以前从未研究过 Powershell,但这很好用,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 2016-04-10
  • 1970-01-01
  • 2015-10-17
  • 2012-05-04
  • 1970-01-01
相关资源
最近更新 更多