运行PowerShell操作Notepad++标记行时遇类型找不到错误
问题解决方法
一、修复[System.Windows.Forms.SendKeys]找不到类型的错误
错误原因是未加载System.Windows.Forms程序集,需在调用SendKeys前添加加载语句:
Add-Type -AssemblyName System.Windows.Forms
完整的程序集加载代码应为:
Add-Type -AssemblyName Microsoft.VisualBasic Add-Type -AssemblyName System.Windows.Forms
二、实现“复制标记行”的正确操作流程
你的SendKeys序列未正确触发“复制标记行”操作,以下是修正后的完整脚本及说明:
修正后的完整脚本
$file = "C:\Files\Timings.csv" $notepad = "C:\Program Files\Notepad++\notepad++.exe" # 打开目标CSV文件 Start-Process $notepad $file # 等待Notepad++启动并激活(可根据实际情况调整等待时长) Start-Sleep -Seconds 1 # 激活Notepad++窗口 [Microsoft.VisualBasic.Interaction]::AppActivate("Notepad++") # 1. 批量标记Location列值为22102的行 [System.Windows.Forms.SendKeys]::SendWait("^f") # Ctrl+F打开查找对话框 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("Location: 22102") # 输入查找内容 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("{TAB}") # 切换到“标记”选项卡 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("!a") # Alt+A 触发“标记所有”按钮 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("{ESC}") # 关闭查找对话框 # 2. 复制所有标记行 [System.Windows.Forms.SendKeys]::SendWait("%s") # Alt+S打开“搜索”菜单 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("m") # 选择“标记”子菜单 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("c") # 选择“复制标记行” # 3. 新建文件并粘贴内容 [System.Windows.Forms.SendKeys]::SendWait("^n") # Ctrl+N新建文件 Start-Sleep -Milliseconds 100 [System.Windows.Forms.SendKeys]::SendWait("^v") # Ctrl+V粘贴内容
关键修正说明
- 增加操作延迟:Notepad++界面响应需要时间,添加短暂等待避免SendKeys命令因执行过快失效
- 修正标记流程:切换到“标记”选项卡执行批量标记,而非单独按F2(F2仅用于切换单行书签)
- 用菜单路径触发操作:相比快捷键,通过Alt菜单路径更稳定,不受Notepad++自定义快捷键设置影响
注意:如果你的Notepad++是中文界面,菜单快捷键需对应调整(比如中文“搜索”菜单为Alt+S,“标记”子菜单为“B”,“复制标记行”为“C”,需根据实际界面验证)
内容的提问来源于stack exchange,提问作者JimJanes
相关产品推荐
相关产品推荐

