You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求编写Batch或VBScript:每次打开文本文件依次复制对应行

实现按顺序逐行复制文本内容的脚本方案

以下提供Batch和VBScript两种实现,均通过计数器文件记录已读取的行数,每次运行时自动复制对应行到系统剪贴板,读完所有行后重置状态。

Batch 脚本实现

@echo off
setlocal enabledelayedexpansion

:: 配置文件路径
set "source_file=Sample.txt"
set "counter_file=line_counter.txt"

:: 初始化计数器
if not exist "%counter_file%" echo 0 > "%counter_file%"
set /p current_line=<"%counter_file%"
set /a next_line=current_line + 1

:: 定位目标行
set "target_line="
set "line_num=0"
for /f "delims=" %%a in (%source_file%) do (
    set /a line_num+=1
    if !line_num! equ !next_line! set "target_line=%%a"
)

:: 执行复制并更新状态
if defined target_line (
    echo !target_line! | clip
    echo !next_line! > "%counter_file%"
    echo 已复制第!next_line!行:!target_line!
) else (
    echo 已读取完所有行,无更多内容可复制。
    del "%counter_file%" 2>nul
)

endlocal

说明

  • line_counter.txt用于记录已读取的行数,首次运行时自动创建并初始化为0
  • for /f循环遍历Sample.txt的每一行,匹配对应行号的内容
  • clip命令将目标行内容复制到系统剪贴板
  • 所有行读取完毕后,自动删除计数器文件,下次运行重新从第一行开始

VBScript 脚本实现

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")

' 配置文件路径
sourceFile = "Sample.txt"
counterFile = "line_counter.txt"

' 读取当前计数器值
currentLine = 0
If objFSO.FileExists(counterFile) Then
    Set objCounter = objFSO.OpenTextFile(counterFile, 1)
    currentLine = CInt(objCounter.ReadLine())
    objCounter.Close
End If
nextLine = currentLine + 1

' 定位目标行
targetLine = ""
lineNum = 0
If objFSO.FileExists(sourceFile) Then
    Set objSource = objFSO.OpenTextFile(sourceFile, 1)
    Do Until objSource.AtEndOfStream
        lineNum = lineNum + 1
        currentText = objSource.ReadLine()
        If lineNum = nextLine Then
            targetLine = currentText
            Exit Do
        End If
    Loop
    objSource.Close
End If

' 执行复制并更新状态
If targetLine <> "" Then
    ' 处理特殊字符,避免cmd命令出错
    safeText = Replace(targetLine, "&", "^&")
    objShell.Run "cmd /c echo " & safeText & " | clip", 0, True
    ' 更新计数器文件
    Set objCounter = objFSO.CreateTextFile(counterFile, True)
    objCounter.WriteLine(nextLine)
    objCounter.Close
    WScript.Echo "已复制第" & nextLine & "行:" & targetLine
Else
    ' 重置状态
    If objFSO.FileExists(counterFile) Then objFSO.DeleteFile(counterFile)
    WScript.Echo "已读取完所有行,无更多内容可复制。"
End If

说明

  • 借助FileSystemObject处理文件读写,WScript.Shell执行剪贴板复制命令
  • 自动处理&等特殊字符,避免命令执行失败
  • 读完所有行后删除计数器文件,恢复初始状态

内容的提问来源于stack exchange,提问作者SUPER POGI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 21:00:29