PowerShell操作Notepad++:无法复制书签行至剪贴板/新页面
PowerShell 操作Notepad++复制书签行失败的解决方法
问题根源
- 原脚本仅标记了第一个匹配
22102的行,未批量处理所有符合条件的行 - 错误使用快捷键
^9,Notepad++默认复制书签行的快捷键为Ctrl+Shift+X(或通过菜单操作更稳定,避免自定义快捷键冲突) - 后续计划代码中
$bookmarkedLines变量未定义,直接执行会报错 - 重复启动Notepad++进程会导致窗口激活混乱,无法确保操作目标窗口正确
修正后的完整脚本
$file = "C:\Files\Timings.csv" $notepadPath = "C:\Program Files\Notepad++\notepad++.exe" $outputFile = $file -replace "\.csv$", "-modified.csv" # 1. 打开目标CSV文件 Start-Process -FilePath $notepadPath -ArgumentList $file Start-Sleep -Milliseconds 1000 # 延长等待时间确保Notepad++完全加载 Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName Microsoft.VisualBasic # 激活Notepad++窗口 [Microsoft.VisualBasic.Interaction]::AppActivate("Notepad++") Start-Sleep -Milliseconds 200 # 2. 批量标记所有Location=22102的行 # 打开查找对话框 [System.Windows.Forms.SendKeys]::SendWait("^f") Start-Sleep -Milliseconds 200 # 输入查找内容 [System.Windows.Forms.SendKeys]::SendWait("22102") Start-Sleep -Milliseconds 200 # 开启标记所有匹配行的书签(通过查找对话框的标记功能) [System.Windows.Forms.SendKeys]::SendWait("{TAB 4}") # 切换到"标记"选项卡 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait(" ") # 勾选"标记所有找到的行" Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("{ENTER}") Start-Sleep -Milliseconds 300 # 3. 复制所有书签行 # 通过菜单操作(避免快捷键冲突):Alt+S打开搜索菜单 → B打开书签子菜单 → C复制书签行 [System.Windows.Forms.SendKeys]::SendWait("%s") Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("b") Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("c") Start-Sleep -Milliseconds 300 # 4. 在当前Notepad++实例中新建文档并粘贴 [System.Windows.Forms.SendKeys]::SendWait("^n") Start-Sleep -Milliseconds 200 [System.Windows.Forms.SendKeys]::SendWait("^v") Start-Sleep -Milliseconds 200 # 5. 直接从剪贴板读取内容并保存为新CSV文件 $clipboardContent = [System.Windows.Forms.Clipboard]::GetText() $clipboardContent | Out-File -FilePath $outputFile -Encoding UTF8
关键修改说明
- 批量标记行:改用查找对话框的"标记所有找到的行"功能,一次性标记所有匹配行,无需循环点击
- 菜单式复制:通过
Alt+S → B → C的菜单路径操作,避免快捷键被用户自定义修改导致失效 - 窗口稳定性:始终操作同一个Notepad++实例,避免多进程激活混乱
- 文件保存优化:直接读取剪贴板内容写入文件,无需依赖Notepad++的保存操作,更可靠
内容的提问来源于stack exchange,提问作者JimJanes
相关产品推荐
相关产品推荐

