在 VSCode中使用PowerShell 读取TXT在终端中输出,实现上摸隐蔽式摸鱼摸鱼阅读小说。

引言

        说起程序员上班看小说,熟悉vscode的小伙伴很多都听过epub reader这款插件,但是经过我自己的实践,感觉很一般而且很容易被发现。于是自己就想到自己做一个脚本,在命令行输出是否更加更加隐蔽呢。处理文本文件是编程中的常见任务之一。在许多情况下,我们需要逐行或逐块读取文件内容,并根据需要进行显示或处理。

        在这篇博客中,我将分享如何使用 PowerShell 读取文本文件,并实现一个简单的交互式脚本,该脚本允许用户通过按 Enter 键或者设置时延自动来控制显示文件的下一部分内容。

背景

        PowerShell 是一种跨平台的任务自动化解决方案,包括命令行外壳、脚本语言和配置管理框架。它在 Windows 系统中特别流行,但也可用于 Linux 和 macOS。

场景

        假设我们有一个较大的文本文(把小说表达的好听点哈哈哈哈),我们想要逐块阅读它,每次显示固定数量的字符。我们还想通过按键来控制何时显示下一部分内容,而且自己懒得动的时候,也可以设置一个固定时间来输出,以便我们可以有时间阅读当前显示的文本。

实现步骤

  1. 打开 VSCode:首先,打开 Visual Studio Code。

  2. 打开新的终端:在 VSCode 中,您可以通过点击顶部菜单的“视图(View)” -> “终端(Terminal)”来打开一个新的终端窗口。这将在 VSCode 的底部打开一个终端。

  3. 确保使用 PowerShell:在打开的终端中,确保您使用的是 PowerShell。如果不是,您可以通过点击终端左上角的下拉菜单来选择或新建一个 PowerShell 终端。

  4. 创建脚本:在终端中输入以下命令来创建一个 PowerShell 脚本文件:

    notepad $env:USERPROFILE\Desktop\ReadChunks.ps1
    
  5. 输入脚本内容:在记事本中输入以下 PowerShell 脚本:

    $content = Get-Content -Path "C:\yourPath\example.txt" -Raw
    $length = $content.Length
    $i = 0
    while ($i -lt $length) {
        $content.Substring($i, [Math]::Min(20, $length - $i))
        Start-Sleep -Seconds 1 # 延迟1秒(可选)
        $i += 20
    }
    

    然后保存并关闭记事本。
    如果出现乱码,就时出现编码的问题了,我们可以通过 -Encoding 参数指定文件的编码格式
     

    Get-Content -Path "C:\yourPath\example.txt" -Encoding UTF8
    
  6. 运行脚本:回到 VSCode 的 PowerShell 终端,运行以下命令来执行脚本:

    & "$env:USERPROFILE\Desktop\ReadChunks.ps1"
    

         效果:

 7.王炸

        有人可能要说了,哎哎哎,你这不行啊,小说动不动几万字,要是我退出了,我那还记得看到哪里去了,太鸡肋了吧。这些问题呢,博主也有想到,于是诞生了能够读取上次阅读位置的终极版!!!

# 文本文件和记录文件的路径
$textFilePath = "C:\yourPath\example.txt"
$recordFilePath = "C:\yourPath\lastReadPosition.txt"

# 检查记录文件是否存在,如果存在则从记录的位置开始读取
if (Test-Path $recordFilePath) {
    $lastPosition = Get-Content -Path $recordFilePath
    $i = [int]$lastPosition
} else {
    $i = 0
}

# 读取文本文件
$content = Get-Content -Path $textFilePath -Encoding UTF8 -Raw
$length = $content.Length

# 从上次停止的位置继续读取
while ($i -lt $length) {
    $chunk = $content.Substring($i, [Math]::Min(20, $length - $i))
    Write-Output $chunk
    Start-Sleep -Seconds 1 # 延迟1秒(可选)
    $i += 20

    # 更新记录文件
    $i | Out-File -FilePath $recordFilePath
}

       ps:有些人喜欢自动挡,比如说我,但是也有人喜欢手动挡,自己动手能力强,没关系,我也配备了一套手动挡模式,只需要按下Enter就会输出下一行:

$content = Get-Content -Path "C:\yourPath\example.txt" -Encoding UTF8 -Raw
$length = $content.Length
$i = 0
while ($i -lt $length) {
    Write-Host $content.Substring($i, [Math]::Min(20, $length - $i)) -NoNewline
    $null = Read-Host
    $i += 20
}



结语

        希望这篇博客能帮助您了解如何在 PowerShell 中有效处理文本文件,也能让你安全且快乐的touch fish!

  • 28
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值