有时候我发现自己会使用 Notepad,而不是 Notepad++ 或更好的编辑器。有时我甚至会将重要内容放在记事本窗口中。
每次需要重启电脑时,我经常会打开多达 20 个记事本实例。当然,其中大多数都是无用的,但我必须逐个扫描,看看是否有值得保存的内容。
是否有可用的实用程序或命令来执行以下任一操作:
- 将所有打开的记事本保存到一个文件中
- 将所有打开的记事本保存到默认命名的文件中
- 将内存中的记事本实例保存到磁盘,以便它们在重新启动时启动
答案1
就在这里自动热键适合此类任务的工具。
您可以创建一个重复的宏
- 聚焦任何
Notepad
标题中有单词的窗口(如果未找到这样的窗口则退出) - 发送Ctrl+S保存文件
- 等待几秒钟
- 如果它发现(再次按标题)“另存为”对话框打开(即,在保存新文件的情况下),它会填写一些默认的编号文件名(通过发送击键)并发送Alt+S以按下节省对话框中的按钮
- 将命令添加
notepad <filename>
到restore-notepads.bat
文件中 - 发送Alt+F4来关闭记事本实例
- 重复。
然后你可以添加restore-notepads.bat
到你的启动菜单,您将发现您所描述的功能“3.将内存中的记事本实例保存到磁盘,以便它们在重新启动时启动”。
答案2
我一直使用记事本作为临时文本存储,因为没有其他程序启动速度更快。为了保存或备份记事本实例的内容,我编写了一些 AHK 代码。它基本上基于 miroxlav 的答案,但我不需要恢复。
下面是代码。
+!s:: ;Save all notepad instance
ClipSaved := ClipboardAll
LastClip := ""
WinGet, id, list, *Untitled - Notepad, ,, ;[1]
Loop, %id%
{
this_id := id%A_Index%
WinActivate, ahk_id %this_id%
Send ^A
Send ^C
Sleep 500
WinMinimize, ahk_id %this_id%
WinGetClass, this_class, ahk_id %this_id%
WinGetTitle, this_title, ahk_id %this_id%
LastClip = %LastClip% `r`n-------`r`n %ClipBoard% ;[2]
ToolTip , Saving All Untitled Notepad Instances `n%a_index% of %id%`nahk_id %this_id%`nahk_class %this_class%`n%this_title%`n
}
ClipBoard := LastClip
; ToolTip , %ClipBoard%
Run notepad.exe
Sleep 1000
Send ^V
Sleep 1000
Clipboard := ClipSaved
ClipSaved =
#Persistent
ToolTip, Done
SetTimer, RemoveToolTip, 2500
return
RemoveToolTip:
SetTimer, RemoveToolTip, Off
ToolTip
return
return
将代码保存到.ahk
文件中,运行它,按下后Alt+Shift+S
,所有未命名的记事本实例的内容应合并到一个新的记事本窗口中。
笔记:
- [1] 如果您想要保存所有记事本实例,而不仅仅是无标题的实例,则将 更改为
*Untitled - Notepad
就ahk_exe notepad.exe
可以了。 - [2] 这是单独的一行。
虽然这个答案来自5年后,但我仍然希望这能对你有所帮助。