Предыстория
Не знаю как у вас, но у меня частенько бывает, что для своих нужд или работы могу использовать до 4-ёх текстовых редакторов одновременно. Не сказал бы, что это делает мне много чести или является показателем продуктивности, однако могу заключить, что этого мало или наоборот много, когда речь заходит о быстрой заметке, которая нужна "здесь и сейчас".
Вообще бывает много разных ситуаций, когда оптимальнее всего использовать стандартный Блокнот от Windows. Он сгодится и для дополнительного буфера обмена, и для несвоевременных мыслей и для короткого плана действий, промежуточных вычислений и так далее. Добавьте сюда минималистичный дизайн, невероятную "гибкость" окна, что вместе делает Блокнот компактным и практичным, и вам не захочется использовать что-либо кроме него… Однако есть один ощутимый нюанс. Нюанс, который не учли разработчики - это Автосохранение.
Проанализировав множество сайтов я осознал, что не я один пострадал от безвозвратно утерянных данных в несохраненном окне Блокнота. Большая часть пользователей теряли свои записи при перебоях электричества. Я же терял записи из-за лагов ноутбука, из-за случайных кликов не туда и точно так же из-за отсутствия электричества (садилась батарея ноутбука). Не сказать, что это было довольно часто, но довольно обидно.
И я начал искать решение этой проблемы.
Гугл выдал два интересных решения:
1. Автосейвер для всех приложений. Который оказался нерабочим. Не знаю с чем это связано, но в комментариях я узнал, что не один столкнулся с этой неисправностью.
2. Аналоги блокнота. Функционал которого избыточен и громоздок, что доставляет ощутимый дискомфорт.
3. Код для AutoHotKey, который, как я понял, инициирует с определенным интервалом нажатие "ctrl+s". Честно говоря, я не пробовал этот способ, так как не хотел долго разбираться в новом софте. При том, что этот "костыль" является отдельной программой, которая занимает память ПК и не факт, что сработает, так как для сохранения по горячим клавишам окно Блокнота должно быть открыто (если я правильно понимаю).
Мне понравилась третья идея, и когда нибудь я всерьез изучу AutoHotKey для других проектов, и попробую тот код в действии, но тогда мне нужно было гарантировано решить проблему с Блокнотом и никогда(?) к этому не возвращаться. Я стал придумывать свой "костыль" на Сmd.exe ;-)
Как работает получившийся автосейвер?
На первом курсе вуза я увлекся командной строкой Windows и знал, что с её помощью можно сделать кучу полезных скриптов. Может я путаюсь в понятиях, вы уж извините дилетанта, вот вам, на всякий случай, разъяснительная ссылка.
Изучал я cmd для сдачи лабораторных и по приколу, потом отложил его в долгий-долгий ящик. И вот теперь я вынул остаточные знания, многократно сдобрил их статьями и справочниками из интернета и выдал это:
Если вкратце данный скрипт:
- После старта создаёт возле своего стартового файла папку для сохранений блокнота, если таковой нет.
- В этой папке сохранений создаёт файл расширения txt, то есть файл блокнота, и даёт ему название, в котором содержится дата и время его создания.
- Открывает этот файл-блокнота, чтобы пользователь мог в нем сразу работать, и запускает обратный таймер в 600 секунд, т.е. в 10 минут.
- По истечении таймера принудительно закрывает (процесс) окно, созданного скриптом, файла-блокнота, тем самым вызывая предупреждение о необходимости сохранения.
- В этом предупреждение кликает на кнопку "Сохранить", тем самым сохраняя и окончательно закрывая окно Блокнота.
- Возвращается на третий пункт…
Да. Получается закольцованный скрипт с интервалом в 10 минут, который принудительно сохраняет закрытием окно файла блокнота и открывает его же.
Заядлые юзеры ПК сразу заметят подводные камни. Но я и не скрываю их, поэтому назову их наперед сам:
Во-первых, мой батник (файл расширения ".bat", в котором содержиться скрипт) сохраняет только когда он сам включен и сохраняет только новые, созданные им же файлы блокнота. Другими словами, при активации скрипта создаётся новый txt-файл, а включить автосохоранение на уже созданном файле (пока) нельзя.
Здесь же стоит сказать, что при необходимости в двух открытых Блокнотах с автосохоранением понадобится и два активированных батника.
Во-вторых, есть малюсенькая вероятность, что во время принудительного закрытия блокнота у вас будет открыто другое окно с предупреждением о сохранении, тогда скрипт может кликнуть "Сохранить" не в том окне.
Шанс ложного срабатывания не велик, так как процедура возобновляется лишь раз в 10 минут (это время можно изменить вручную), и длится до 3 секунд. Вряд ли обстоятельства совпадут так, что срабатывание скрипта совпадёт с сохранением чего-то ещё через предупредительное окно. Но вероятность есть.
Стоит отметить, что скрипт жмёт именно на кнопку "Сохранить" - это значит, что если в предупреждающие окне будет кнопка с другим названием, то она не нажмётся.
Примечательно:
1) Команда «Echo “текст”>> *.txt» - Интернет говорил мне, что создать блокнот-файл можно было только командами "copy" и "copy con". Но они подразумевали наличие исходного файла для копирования или запускали редактирование этого текстого файла в cmd и отказывались выполнять код дальше без вмешательства пользователя. На специфическую возможность команды "echo" я наткнулся далеко не сразу. Если после "озвучиваемого" текста поставить >>, то это сообщение выведится в отдельный файл, а если его нет, то создаст его самостоятельно.
2) Nircmd.exe - это небольшая утилита командной строки, позволяющая выполнять некоторые полезные задачи без отображения пользовательского интерфейса. Разработана Ниром Софером. Она нужна для реализации всего одной функции - для нажатия "Сохранить" в сплывшем окне.
3) timeout 600 на 14ой строке - строка отвечающая за частоту автосхранений. Измеряется в секундах.
Как пользоваться
Для того чтобы запустить скрипт у себя на компьютере, нужно скачать архив с бантиком и всем необходимым с моего репозитория на Гит-хабе.
Разархивируйте содержимое в нужную вам папку. Там же рядом будут хранится будущие автоматические сохранения Блокнота.
Перед включением прочтите короткий файл ReadMe.txt, там дополнительные инструкции и пояснения.
Чтобы поменять настройки батника, например частоту автосохранений, я рекомендую открывать батник через Wordpad (это упрощённая альтернатива Word от Microsoft), так как он может сохранять файлы в расширении MS-DOS, только в этом формате удается сохранить кириллицу в нужной кодировке. Другими словами: только в этом формате осуществляется поддержка русского языка.
*Если кириллица в работе скрипта вам не так важна, то можете редактировать и в Блокноте и вообще в чём хотите. Я свёл использование русских символов к минимуму, так как при указании путей к файлам, слов на русском - они безвозвратно бились и команды не работали совсем.
Продолжим говорить про тайминги сохранений. Для изменения периодичности работы скрипта нужно в 14ой строке после команды "timeout" указать нужное время в секундах. По умолчанию стоит 10 минут, т.е. 600 секунд.
На будущее.
Я планирую довести скрипт до ума, чтобы он запускал не только новые файлы, но и мог работать со старыми, был более презентабельным и так далее, а пока на коленке пишу эту статью, дабы поделится своими наработками.
Это моя первая статья на Дзене, буду очень рад обратной связи. Для меня она крайне важна, чтобы стать лучше! Спасибо за внимание!