请求编写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用于记录已读取的行数,首次运行时自动创建并初始化为0for /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
相关产品推荐
相关产品推荐

