
Время от времени я ловлю себя на том, что использую Notepad вместо Notepad++ или лучшего редактора. Иногда я даже помещаю важные вещи в эти окна блокнота.
Когда приходит время перезагрузить мой ПК, у меня часто бывает до 20 открытых экземпляров блокнота. Конечно, большинство из них бесполезны, но мне приходится сканировать каждый, чтобы увидеть, есть ли что-то стоящее сохранения.
Есть ли какая-либо утилита или команда, которая могла бы выполнить любое из следующих действий:
- Сохраните все открытые блокноты в один файл
- Сохранение всех открытых блокнотов в файлы с именами по умолчанию
- Сохраните экземпляры блокнота в памяти на диске, чтобы они запускались при перезагрузке
решение1
Да, естьAutoHotKeyинструмент, подходящий для такой задачи.
Вы можете создать макрос, который будет повторяться
- фокусирует любое окно со словом
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 лет, я все равно надеюсь, что он вам поможет.