[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] bat如何删除txt最后的7行


aa
bb
c
d
e
f
g
h
变为
aa

这个怎么写?求大神解答谢谢

文本约有10mb,30w行

TOP

  1. <#*,:&cls
  2. @echo off
  3. cd /d "%~dp0"
  4. powershell -NoProfile -ExecutionPolicy RemoteSigned -Command ". ([ScriptBlock]::Create((Get-Content -LiteralPath \"%~0\" -ReadCount 0 | Out-String ))) "
  5. pause
  6. exit /b
  7. #>
  8. # 功能:删除文件的最后N行
  9. # 大文件
  10. $file = "largeFile.txt"
  11. # 最后N行
  12. $lastN = 7
  13. # 换行分割符
  14. $charDelims = 13
  15. try {
  16.   $stream1 = New-Object System.IO.FileStream -ArgumentList @($file, [System.IO.FileMode]::Open, [System.IO.FileAccess]::ReadWrite, [System.IO.FileShare]::None)
  17.   $pos = $stream1.Seek(0, [System.IO.SeekOrigin]::End)
  18.   $ctrLines = 0
  19.   while ($ctrLines -lt $lastN -and $pos -gt 0) {
  20.     $pos = $stream1.Seek(-1, [System.IO.SeekOrigin]::Current)
  21.     $byte = $stream1.ReadByte()
  22.     if ($byte -eq $charDelims) {
  23.       $ctrLines++
  24.     }
  25.     $pos = $stream1.Seek(-1, [System.IO.SeekOrigin]::Current)
  26.   }
  27.   $stream1.SetLength($pos)
  28. } catch {
  29.   $_ | Write-Host -ForegroundColor Red
  30. } finally {
  31.   if ($stream1) {
  32.     $stream1.Dispose()
  33.   }
  34. }
复制代码
微信:flashercs
QQ:49908356

TOP

  1. #&@cls&powershell "gc %~0|out-string|iex"&pause&exit
  2. $file="aa.txt"
  3. $txt=gc $file -readcount 0
  4. $txt7=$txt[0..($txt.length-1-7)]
  5. sc -value $txt7 "new-$file"
复制代码

TOP

返回列表