Ошибка в notepad при компиляции

Научитесь настраивать программу Notepad++ и плагин NppExec для работы с Java.

https://gbcdn.mrgcdn.ru/uploads/post/1460/og_cover_image/b855eacfe9917a61e0e969f476eb2f92

Приветствую всех! Для начала хочу сказать, что я изучаю курс Java 1 и, по рекомендации преподавателя, решил воспользоваться Notepad++ для экспериментов с кодом и подготовки домашнего задания. Нужно было настроить Notepad++ таким образом, чтобы я мог запускать код и сразу видеть результат выполнения программы. В интернете я нашёл несколько способов настройки Notepad++ под работу с Java. Самый быстрый из них я немного дополнил и хочу показать вам. За основу я взял данный гайд на английском — там всё кратко и сжато. Я же попытаюсь подробно описать процесс настройки, расскажу еще о нескольких дополнительных возможностях и решении некоторых проблем программы и плагина.  

Если у вас что-то не получится или вы найдёте неточность в статье, напишите мне, и я с радостью попытаюсь помочь решить вашу проблему или устранить ошибку. Также буду рад вашим предложениям и дополнениям. 

Итак, начнём. 

Готовим Java-инструменты и Notepad++

  1. У вас должны быть установлены JDK + JRE и правильно настроена переменная среды PATH.
  2. Скачиваем и устанавливаем последнюю версию NotePad++. Выберите версию 32-bit или 64-bit. Я буду показывать пример с 64-bit. 
  3. Скачиваем плагин NppExec. По ссылке представлены несколько версий. Я выбрал v0.5.9.9 dev, архив — NppExec20160628_dll_x64-2.zip. В имени архива указана версия — x64. Если вы скачали Notepad++ для 32-bit, вам нужен другой файл — NppExec20160628_dll.zip . Если не получится, попробуйте другую версию — главное чтобы там был NppExec.dll файл. Распакуйте архив в директорию, где у вас установлена Notepad++plugins. В моём случае полный путь выглядит так: «C:Program FilesNotepad++plugins«. Чтобы плагин заработал, перезапустите Notepad++, если он был запущен ранее.

Настраиваем плагин NppExec 

В меню выберите Плагины (Plugins) -> NppExec и выполните следующие действия:  

  • отключите «Console Command History»; 
  • включите «Save all files on execute»;  
  • включите «Follow $(CURRENT_DIRECTORY)».

 

4.  Добавьте команду компиляции:

  • Перейдите в Плагины (Plugins) > NppExec > Execute… (или просто нажмите F6 — горячая клавиша).
  • В открывшемся окне введите следующие команды:  

cd “$(CURRENT_DIRECTORY)” 

javac $(FILE_NAME) 

  • Нажмите кнопку Save… и введите имя скрипта, например — Compile, так как этот скрипт как раз будет выполнять компиляцию. Нажмите Save.  

 

5.  Чтобы добавить новые команды, снова перейдите в Плагины (Plugins) > NppExec > Execute… У вас будет в окне “ Command(s): «cd “$(CURRENT_DIRECTORY)” javac $(FILE_NAME)». Здесь нет кнопки для добавления новой команды, поэтому вы просто заменяем код на новый:  

cd "$(CURRENT_DIRECTORY)"  

java $(NAME_PART)  

Затем Save. Обязательно измените имя скрипта, к примеру — «Run». Этот скрипт будет запускать выполнение программы. Нажмите Save

 

 Повторите действия ещё раз, введите:  

cd "$(CURRENT_DIRECTORY)"
javac $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
java $(NAME_PART)
:exit

 

Сохраните и назовите скрипт — Compile and run, по смыслу уже понятно, что данный скрипт сначала будет компилировать, а затем запускать программу. Нажмите ОК.  

6.  Добавьте ваши команды в меню Макросы (Macro). Для этого:  

1) Перейдите в Плагины (Plugins) > NppExec > Advanced options…

 

2) Поставьте галочку напротив Place to the Macros submenu

 

3) Введите «Run» в поле » Item name: «, затем нажмите на всплывающий список » Associated script: » и выберите скрипт под названием Run

 

После этого нажмите на » Add/Modify »  

 

и в области Menu items * вы увидите, что появилась строка » Run :: Run «.  

Повторите эти действия с скриптами Compile и Compile and run, чтобы они тоже появились в окне Menu items *.  

 

Нажмите Ок и перезапустите Notepad++. 

7.  Протестируйте созданные вами скрипты, открыв или создав java-файл. К примеру, создадим файл Test.java (при сохранении обязательно укажите тип — Java source file (*.java) ) и запишем в него:  

class Test {  

    public static void main(String[] args) { 

        System.out.println("Hello world!");  

    } 

 }  

 

8.  Перейдите в меню Макросы (Macro) и нажмите Compile. Затем снова зайдите в меню и нажмите Run. Или вы можете выполнить два действия сразу, по кнопке Compile and run.

 

9.  Если вы получили ошибку при компиляции или выполнении программы, измените команду Compile или Run (в зависимости от того где у вас ошибка). 

Если ошибка при компиляции измените команду Compile: 

cd $(CURRENT_DIRECTORY)  

C:Program FilesJavajdk-9binjavac $(FILE_NAME)  

Если ошибка при выполнении, измените команду Run: 

cd "$(CURRENT_DIRECTORY)"  

C:Program FilesJavajdk-9binjava $(NAME_PART)  

Во второй строке укажите путь к файлу javac или java на вашем компьютере. Путь к этим файлам может отличаться, будьте внимательны! Ошибка может быть вызвана тем, что Windows не знает путь к программе javac, или тем, что вы используете Notepad++ Portable Version. После изменений в Compile и Run не забудьте также про Compile and run

Вот пример ошибки:

 

По сообщениям из консоли видно, что компиляция прошла успешно, но при выполнении программы произошла ошибка версий, а также не были найдены java.dll и SE Runtime Environment. Поэтому мы указываем путь для выполнения программы в скриптах Run и Compile and run

 

После этого программа выполняется успешно: 

 

10.  Чтобы было удобнее компилировать и выполнять программы, настроим горячие клавиши.  Перейдите в меню Запуск (Run) и выберите «Изменить горячую клавишу/удалить команду (Modify Shortcut/Delete Command…)». 

 

Во вкладке Plugin Commands настройте горячие клавиши для быстрого запуска скриптов. Найдите имена Compile, Run, Compile and Run, по двойному клику задайте удобное вам сочетание клавиш для быстрого запуска. У меня, например, Compile and Run настроен на клавиши Ctrl + Shift + C. 

 

После написания кода достаточно будет нажать эту комбинацию клавиш, чтобы программа была скомпилирована и запущена. 

11.  Если вы хотите изменить цветовую схему (тему) или выбрать другой шрифт, настроить его размер и начертание, выберите меню Опции (Settings) > Определение стилей (Style configurator…)  : 

 

 

12.   При написании кода мне очень помогает автовставка символов. Например, когда я ставлю круглую скобку “(“, закрывающая скобка “)“ ставится автоматически. Кто работал в средах разработки (наподобие IDEA IntelliJ), знаком с этим и согласится, что это, вроде бы, мелочь, а удобно. По умолчанию автовставка выключена. Для её включения зайдите в Опции (Settings) > Настройки (Preferences) > Автозавершение (Auto-Completion) и выберите, что вам нужно. Если нужных символов нет, можете сами создать “Заказную пару”(Matched pair). 

 

 

13.  При выполнении программ вы можете столкнуться с проблемой кодировки в консоли. Пример: 

 

Решается это очень просто. Переходим в меню Плагины (Plugins) > NppExec > Console Output 

 

И здесь вы должны выставить в значении Console Output is — «UTF-8».

 

Если вдруг это не помогло, попробуйте поставить галочку  — Console Input is the same as Output.

 

14.  Если вы хотите отключить проверку орфографии, нажмите кнопку «Spell  Check Document Automatically (ABC)» на панели задач. После этого  

кириллица не будет подчеркиваться красным. Вы также можете включить/выключить консоль по кнопке, которая расположена справа — «Show Console Dialog».

 

В разделе Плагины (Plugins) > NppExec > Advanced Options вы можете настроить отображение консоли при запуске программы. Выберите нужный вариант (Yes/No/Auto) в разделе Console — опция Visible (on start).  

А ещё вы можете выбрать язык по умолчанию, для этого перейдите в Опции (Settings) > Настройки (Preferences) > Новый документ (New Document) и выберите Синтаксис по умолчанию (Default language). В нашем случае — Java. Теперь, когда вы открываете новую вкладку или запускаете Notepad++ с пустым файлом, типом по умолчанию будет Java и вам не придется выбирать его каждый раз. 

15.  Для удобства восприятия вы можете отключить системные (внутренние) сообщения консоли. Перейдите по вкладке Плагины (Plugins) > NppExec > No internal messages. После того, как вы поставите галочку, выполнение программы в консоли будет выглядеть так : 

 

При этом ошибки будут всё равно выводиться в консоль, что весьма удобно: 

 

Надеюсь, эта инструкция была вам полезна. Если заметите ошибки или неточности, напишите, и я исправлю! Всем удачи! 

Время на прочтение
17 мин

Количество просмотров 47K

Компиляция программ при помощи текстового редактора на примере Notepad++

Цель: Научиться компилировать программы из командной строки. Научиться компилировать из текстового редактора Notepad++ (вернее научиться писать скрипты и связывать их), создавать скрипты и макросы, устанавливать системные переменные.

Сам текстовый редактор ничего не компилирует и не запускает. Также как и IDE не компилирует. Компиляция происходит с помощью компилятора. Выполнение производится некоторой средой выполнения. Это может быть интерпретатор команд или среда выполнения.
При компиляции программы на C# упаковываются в сборки. Код на языке IL автоматически преобразуется в код для конкретного процессора. Что относится к java, то скомпилированные файлы .class выполняется виртуальной машиной Java. Файлы .java компилируются в бай-код, то есть некоторый промежуточный код. Компиляция в exe файл тоже производится компилятором.

.EXE (сокр. англ. executable — исполнимый) — расширение исполняемых файлов, применяемое в операционных системах DOS, Windows, Symbian OS, OS/2 и в некоторых других, соответствующее ряду форматов. Процесс получения exe файла состоит из следующих этапов: препроцессинг, ассемблирование, компилирование, линковка.

ОUT файлы — исполняемые файлы для UNIX-подобных операционных систем.
Файл может хранить исполняемый код, общую динамическую библиотеку или объектный код.

Терминология

Cmd.exe — интерпретатор командной строки (англ. command line interpreter) для операционных систем OS/2, Windows CE и для семейства операционных систем, базирующихся на Windows NT (англ. Windows NT-based). cmd.exe является аналогом COMMAND.COM

Те́кстовый проце́ссор — компьютерная программа, используемая для написания и модификации документов, компоновки макета текста и предварительного просмотра документов в том виде, в котором они будут напечатаны (свойство, известное как WYSIWYG).

Текстовые процессоры, в отличие от текстовых редакторов, имеют больше возможностей для форматирования текста, внедрения в него графики, формул, таблиц и других объектов.

Скрипт (сценарий) — это отдельные последовательности действий, созданные для автоматического выполнения задачи.

Интерфе́йс по́льзователя, он же по́льзовательский интерфейс (UI — англ. user interface) — интерфейс, обеспечивающий передачу информации между пользователем-человеком и программно-аппаратными компонентами компьютерной системы (ISO/IEC/IEEE 24765-2010).

GUI означает graphical user interface, графический интерфейс пользователя.
GUI состоит из одного или нескольких окон и каждое окно содержит один или несколько элементов управления.

SDK (от англ. software development kit) — набор средств разработки, который позволяет специалистам по программному обеспечению создавать приложения для определённого пакета программ, программного обеспечения базовых средств разработки, аппаратной платформы, компьютерной системы, игровых консолей, операционных систем и прочих платформ.

IDE (Integrated Development Environment) — интегрированная среда разработки программного обеспечения.

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.

Переменные среды́ Windows делятся на две категории:
Переменные среды́ пользователя — указывают путь до пользовательских каталогов.
Системные переменные — хранят данные о некоторых каталогах операционной системы и конфигурации компьютера.

Предпосылки

Для сборки проектов, в настоящее время часто используется командная строка.

Как это упрощает сборку? Дело в том, что вы можете создать командный файл с параметрами компилятора, с параметрами логирования, с параметрами получения ошибок и многими другими параметрами, которые будут автоматизировать вашу сборку. Плюсы такого подхода очевидны:
у вас не тратится время на загрузку тяжелой IDE, вы можете автоматизировать многие детали вашей сборки. Из командной строки могут быть доступны аргументы программы, которые недоступны из GUI. У GUI обычно меньше возможностей, потому как не все команды и аргументы будут предоставлены пользователю. Вы можете записать ваш скрипт(набор команд, логику и переменные) в отдельный файл и запускать при надобности.
К тому же такой подход даст вам более глубокое изучение и понимание того, что происходит во время выполнения. Вы сможете рассмотреть каждый шаг отдельно. Другой аспект, использование блокнота для компиляции, предоставляет вам возможность отлаживать и запускать небольшие куски кода без использования вашей тяжелой IDE. У вас в нужный момент может не оказаться установленной IDE и отсутсвовать подключение к интернет. В принципе вы можете использовать другой текстовый редактор, не Notepad++. Основная идея остается та же. В этой статье я опишу использование cmd Windows 10, Notepad++ и плагина NppExec. В предыдущих версиях Windows это тоже работает. Могут быть незначительные отличия. В данном вопросе вы можете разобраться самостоятельно.

Заметьте, это не призыв отказаться от удобных средств IDE. Хорошие, удобные IDE повышают производительность команды разработчиков. К сожалению, по тем или иным причинам не всегда существует возможность их использовать.

Скачать программы вы можете с официальных сайтов:
Notepad++: notepad-plus-plus.org
Исходники релизов программы: github.com/notepad-plus-plus/notepad-plus-plus/releases
Автор программы: Don HO, Senior Software Engineer
Биография Резюме автора: donho.github.io

Автор плагина: Vitaliy Dovgan
Помощь: Don HO, Jens Lorenz, Juha Nieminen,Joel Yulilouma

Новую версию NppExec вы можете скачать с сайта.

Новые версии Notepad++ поддерживают установку плагинов из репозиториев. Вам достаточно нажать в меню плагины/управление плагинами, в строке поиск набрать NppExec, отметить галочку и нажать кнопку установить. Если же вы пользуетесь более ранней версией npp, то вам следует скачать плагин и распаковать в папку plugins. Обычно она находится по пути …Notepad++plugins.

Версии NppExec: Unicode и ANSI
Разработчик рекомендует использовать Unicode версию.

Узнать версию NppExec: ПлагиныNppExecHelp/About

Вначале рассмотрим компиляцию из командной строки.

Программа cmd в Windows находится по следующему пути:

%windir%system32cmd.exe

Выполнить программу можно нажав поиск cmd и нажав на приложение «командная строка» либо из меню «выполнить», набрав cmd.

Настройки консоли cmd

В левом верхнем углу нажмите на значке консоли и выберите «свойства» для изменения текущих свойств. Вы можете поменять ряд свойств консоли: цвет, шрифт, расположение.

Для изменения свойств по умолчанию выберите «значения по умолчанию».

Вы можете назначить горячие клавиши для вызова командной строки.

Для этого наберите в поиске cmd, щелкните на «Командная строка» правой кнопкой и выберите «перейти к расположению файла. Затем, правой кнопкой на расположении и свойства. Установите курсор в поле «Быстрый вызов» и нажмите на клавиатуре сочетание клавиш, например: Ctrl+Alt+T. Такое сочетание клавиш соответствует вызову терминала Linux Ubuntu и вам не нужно будет заучивать новое. Если хотите, можете задать свое сочетание клавиш. cmd будет вызываться от имени пользователя. Чтобы запустить cmd от имени администратора, нужно набрать cmd в поиске, щелкнуть на нем правой кнопкой мышки и выбрать «Запуск от имени администратора».

cmd.exe — файл, это часть системы, командный интерпретатор системы Windows.

Командный интерпретатор, интерпретатор командной строки — компьютерная программа, часть операционной системы, обеспечивающая базовые возможности управления компьютером посредством интерактивного ввода команд через интерфейс командной строки или последовательного исполнения пакетных командных файлов.

Ключи запуска cmd.exe:

/c исполняет команду, заданную строкой, и завершает работу приложения;
/k исполняет команду, заданную строкой, и продолжает работу приложения;
/a — устанавливает вывод в стандарте ANSI;
/u — устанавливает вывод в Юникоде;
/? — вывод справки в командной строке;
Для компиляции из командной строки, вам нужно знать минимальных набор команд.

Для более глубокого изучения вам, скорее всего, понадобятся такие понятия как:
Processes, Threads, Streams, Fibers, семафоры, мьютексы и так далее. Всё то, что связанно с многопоточностью и многозадачностью.

В этой небольшой статье, пока что, таких глубоких знаний не требуется.

Немного о переменных

Вы можете использовать переменные, которые относятся к переменным среды пользователя, к переменным cmd, к переменным программы Notepad++, к переменным плагина NppExec.
Aliases — в общем случае это псевдонимы переменных. Они могут быть использованы для задания короткого имени переменной в определенной области видимости.

В нашем контексте слово «команда» означает команда или программа. Получить список команд вы можете набрав в командной строке «help» без кавычек. Отобразится список команд с их описанием. Получить помощь по определенной команде, вы можете набрав «help имя_команды».

Компиляция программ java из командной строки

Для компиляции программ java, у вас на компьютере должна быть установлена jdk.
«Java Development Kit (сокращенно JDK) — бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac)». JDK включает стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE). В состав JDK не входит интегрированная среда разработки на Java, поэтому разработчик, использующий только JDK, вынужден использовать внешний текстовый редактор и компилировать свои программы, используя утилиты командной строки. Скачать её вы можете с сайта Oracle, либо выбрать OpenJDK. Существуют комплекты разработки приложений на Java других производителей, доступные для ряда платформ. Ссылка для скачивания jdk: jdk.java.net/archive

Вот несколько существующих на сегодняшний день jdk: Oracle JDK, OpenJDK by Oracle, AdoptOpenJDK, Red Hat OpenJDK, Azul Zulu, Amazon Corretto. Скачиваете и устанавливаете, в документации об установке всё подробно расписано. Если же вы уже используете IDE — интегрированную среду разработки с уже установленной JDK, то вам остается только найти её на вашем диске. Среды разработки либо включают в комплект поставки одну из версий JDK, либо требуют для своей работы предварительной инсталляции JDK на машине разработчика. Для компиляции и выполнения, вам потребуются файлы: javac.exe — для компиляции и java.exe — для выполнения программы. Заметьте jdk должна быть установлена, потому как при компиляции и выполнении используются ряд файлов ресурсов, таких как библиотеки классов, отладчик и другие ресурсы.

Компиляция из командной строки в упрощенном виде выглядит так:

javac HelloWorld.java

. Почему в упрощенном? Потому как мы не задаем полный путь к компилятору, полный путь к файлу, не указываем другие параметры, такие как имя выходного файла и другие.

Если вы просто выполните такую команду, предварительно ничего не настроив, то скорее всего вы получите ошибку: «javac не является внутренней или внешней командой, исполняемой программой или пакетным файлом». То есть ваша система «не знает» где находится javac и нам нужно явно указать где находится компилятор.

Об установке java читайте в официальной документации.

Где установлена java, вы можете узнать набрав команду в консоли:

where java

Пишем новую строчку:

c:путь_к_файлу_javacjavac  HelloWorld.java
с:папка_на_диске_перваяпапка_на_диске_вторая...javac  HelloWorld.java

Здесь папка_на_диске_первая, папка_на_диске_вторая — это название ваших папок на диске.
То есть это полный путь до файла javac.

Скорее всего вы получите следующую ошибку:

javac: file not found: hello.java
Usage: javac <options> <source files>
use -help for a list of possible options

В этом случае javac сообщает нам, что нет такого файла hello.java и предлагает ознакомиться с опциями компилятора.

Мы можем решить эту проблему двумя путями. Перейти в каталог в терминале.

cd полный_путь_к_нашему_java_файлу

Либо указать полный путь при компиляции.

с:папка_на_диске_перваяпапка_на_диске_вторая...javac  с:путьHelloWorld.java

Здесь следует сделать уточнение, в данном случае я рассматриваю путь в системах Windows.
В других системах пути прописываются по другому. Более подробно смотрите документацию.

В случае успешной компиляции у вас в каталоге появится файл HelloWorld.class

Выполнить этот файл мы можем командой:

с:папка_на_диске_перваяпапка_на_диске_вторая...java -classpath . HelloWorld

В данном случае точка означает текущий пакет, текущий каталог.

В случае не указания -classpath, возможен вывод ошибки:

«Error: Could not find or load main class имя»

Если вы указываете в классе пакет, то вам при запуске скомпилированного файла нужно указать путь к пакету.

Мы с вами немного разобрались, как компилировать и запускать java программы из командной строки. Теперь нам нужно сделать тоже самое в Notepad++ при помощи плагина NppExec. Скачиваем и устанавливаем плагин, если он у нас еще не установлен и устанавливаем.

После правильной установки, плагин NppExec появится в меню «Плагины».

NppExec имеет свою собственную консоль наподобие CMD.
По умолчанию приглашение на ввод команд не отображается. Для показаскрытия консоли выберите: ПлагиныNppExecShow console.
Для получения справки наберите в консоли help и нажмите Enter. Для получения более подробной информации об NppExec наберите в консоли: help npp_exec.

Из help:

Так что, вообще говоря, NppExec — это инструмент. Этот инструмент делает именно то, что вы говорите, без каких-либо предположений, без неявного вызова чего-либо и так далее.

Это может быть критичто при разработке, когда «родная», «умная» консоль о чем-то «догадывается», к примеру в какой системе она запущена и может подставлять свои «умные» значения.

Do _not_ use NPP_EXEC to start a batch file or an executable file in NppExec!

Не используйте команду npp_exec для старта exe файла или bat файла.
Цель NPP_EXEC — выполнить собственный скрипт.
Для старта стороннего приложения напечатайте:
application.exe // в этом случае exe файл с именем application.exe
batchfile.bat // в этом случае batch с именем«batchfile.bat»

Нам остается только создать настройки для компиляции и выполнения. Мы сделаем эти настройки отдельно. Создадим настройки «для компиляции» и создадим настройки «для компиляции и выполнения».

Настройка системных переменных

Для того чтобы не вводить каждый раз полный путь к программе, будь то компилятор,
компоновщик, система сборки и т.д., вы можете установить системные переменные.
Как задаются системные переменные? Вы можете задать их в графическом интерфейсе, из cmd, используя Power Shell, используя regedit.

Как задать системные переменные используя графический интерфейс

Свойства компьютераДополнительноПеременные средыПеременные среды пользователя для «имя пользователя». Здесь вы можете создать, либо отредактировать имеющуюся переменную среды.

Как задать переменную среды используя командную строку

Для задания переменных окружения, вам нужно иметь права администратора.

сmd

SET

— вывод текущих установленных переменных системного окружения. Команда выводит не полный список.

Другие переменные принимают свои значения динамически:

%CD% — принимает значение текущего каталога.
%DATE% — принимает значение текущей даты.
%TIME% — принимает значение текущего времени.
%RANDOM% — значение случайного числа в диапазоне между 0 и 32767.
%ERRORLEVEL% — текущее значение ERRORLEVEL, специальной переменной, которая используется в качестве признака результата выполнения программы.
%CMDEXTVERSION% значение версии расширенной обработки команд CMD.EXE.
%CMDCMDLINE% — раскрывается в исходную командную строку, которая вызвала командный процессор.

SET переменная=строка

переменная — Имя переменной среды.
строка — Строка символов, присваиваемая указанной переменной.

set имя_переменной

— Показывает текущее значение переменной с именем имя_переменной.

echo %имя_переменной% 

— Выводит значение переменной.

Переменные, задаваемые командой set, действуют лишь на протяжении командной сессии, в которой они были заданы. То есть переменные будут действительны до прекращения сессии текущего пользователя либо до перезагрузки.

Для того чтобы переменные работали после перезагрузки, вам нужно добавить их в системный реестр (В случае использования систем линейки Windows). Они могут быть добавлены средствами GUI Windows:

Выберите Run или Выполнить(Клавиша Win+R)

control sysdm.cpl 

У вас отобразится окно свойств системы. Выберите «дополнительно» и «переменные среды».

Здесь есть два вида переменных среды. Это системные переменные и переменные среды пользователя. Переменные среды пользователя относятся к определенному пользователю системы и его системному окружению. Здесь вы можете задать переменную Path для быстрого доступа к часто используемым программам. Значение переменной представляет из себя строку.
Это набор путей разделенных символом «;».

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы. Переменные среды́ устанавливаются пользователем или сценариями оболочки.

Вы также можете сделать это с помощью утилиты командной строки для работы с реестром Windows — reg.

reg /?

— получение справки по данной утилите.

REG ADD <имя_раздела> [/v <имя_параметра> | /ve] [/t <тип>] [/s <разделитель>]
        [/d <данные>] [/f]
        [/reg:32 | /reg:64]

Пример использования скрипта для добавления системной переменой:

SET KEY=полный_путь_к_разделу_рееестра
SET PARM=имя_параметра

Эти переменные сохраняются до окончания текущей командной сессии либо до изменения значения в текущей сессии.

Чтобы добавить переменную path для текущего пользователя(текущий пользователь — пользователь имя которого вы использовали при входе в сеанс):

Устанавливаем значения переменных и используем их в команде

REG ADD ...

Значение Path указываем пути через точку с запятой.

SET KEY=HKEY_CURRENT_USEREnvironment
SET PARAM=%systemdrive%путь;d:;
REG ADD %KEY% /v Path /d  %PARAM%

Нам нужно указать в значении PARAM все пути, которые у нас были уже установлены и путь к компилятору.

HKEY_CURRENT_USER — это ветка текущего пользователя в реестре.
Environment — здесь хранятся переменные среды.

Предупреждение: «Так вы работаете с системным реестром. Обязательно сделайте копию реестра и создайте контрольную точку восстановления вашей системы». Безопаснее будет устанавливать системные переменные и переменные среды пользователя штатными средствами.

Обязательно ознакомьтесь с материалами:

Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7, Windows 8.1, Windows 10 (Официальная поддержка Microsoft):
support.microsoft.com/ru-ru/help/322756

Создание точки восстановления системы
Применимо к: Windows 10
support.microsoft.com/ru-ru/help/4027538/windows-create-a-system-restore-point

mrt 

— запуск средства удаления вредоносных программ Malicious Software Removal Tool

Настройки NppExec в Notepad++

Открываем Nonepad++.
Нам нужно создать скрипты cmd.
Выбираем ПлагиныNppExec
Отключяем «Console Command History»;
Включаем «Save all files on execute»;
Включаем «Follow $(CURRENT_DIRECTORY)»

Выбираем ПлагиныNppExecExecute или нажимаем F6.

В открывшемся окне пишем:

cd "$(CURRENT_DIRECTORY)"
javac $(FILE_NAME)  

Нажимаем Save… и в поле ScriptNme пишем: CompileJava.
Данный скрипт будет выполнять наш код java.

Снова выбираем ПлагиныNppExecExecete или нажимаем F6.

cd "$(CURRENT_DIRECTORY)"   
java $(NAME_PART)

Нажимаем Save… и пишем имя «RunJava». Данный код, написанный выше, будет компилировать код Java.

Повторяем тоже самое и пишем (Для компиляции и выполнения):

cd "$(CURRENT_DIRECTORY)"
javac $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
java $(NAME_PART)
:exit

Сохраняем как CompileAndRunJava.
Нажмем кнопку «ОК».

cd "$(CURRENT_DIRECTORY)"

— перейти в текущую папку. В данном случае текущей будет та папка, куда вы сохранили текстовый файл.

javac $(FILE_NAME) 

— компилировать файл с именем находящимся в переменной FILE_NAME.

В нашем случае это имя сохраненного файла. Далее следует условие.

if $(EXITCODE) !=0 goto exit 

— если наш код не возвратил нормальное завершение == 0, то выйти.

java $(NAME_PART) 

— выполнить наш скомпилированный файл.

Далее мы свяжем наши скрипты с макросами.

В Notepad++ выбираем Плагины (Plugins) NppExec Advanced options…

Ставим галочку напротив «Place to the Macros submenu». В раскрывающемся списке «Associated script:» выбираем нужный нам скрипт и даем ему имя в поле «Item Name». И нажимаем Add/Modify. Проделываем это для всех наших скриптов, нажимаем «Ок» и перезапускаем Notepad.

Решение проблем с неправильным выводом русских букв в консоли:
Плагины (Plugins)/ NppExec / Console Output

Ставим нужные нам кодировки ввода и вывода.

Отключение сообщений внутренней консоли: Плагины (Plugins) / NppExec / No internal messages.

В случае появления сообщение при выполнении файла ИмяНашегоКласса.class, о том что main не найден, просто меняем наш скрипт: То есть нам нужно указать либо полный путь к пакету либо указать текущий пакет символом «.».

У нас получится такой скрипт:

cd "$(CURRENT_DIRECTORY)"   
java . $(NAME_PART)

Если же cmd не находит файла javа, то указываем к нему полный путь.
ИмяДиска:папка1папка2…java. $(NAME_PART).

Слегка улучшим наш код:

npp_save 
cd "$(CURRENT_DIRECTORY)"
путь_к_javacjavac $(FILE_NAME) 
if $(EXITCODE) !=0 goto exit
путь_к_javajava . $(NAME_PART)
:exit 

Скрипт компиляции Perl:

 npp_save 
CD $(CURRENT_DIRECTORY)
perl.exe -c -w "$(FILE_NAME)" 

Объяснение скрипта:
npp_save — внутренняя команда npp, сохранить
CD $(CURRENT_DIRECTORY) — переход к текущей папке
perl.exe -c -w «$(FILE_NAME)» выполнение perl.exe -c -w
пример: perl.exe -c -w test.pl
-c означает compile, компилировать
-w означает warnings, выводить предупреждения

Скрипт для компиляции с#:


cd "$(CURRENT_DIRECTORY)"
Путь_к_csccsc $(FILE_NAME)
if $(EXITCODE) !=0 goto exit
$(NAME_PART)
:exit

Здесь Путь_к_csc — это путь к вашему csc.exe
Обычно он выглядит так: %systemdrive%WindowsMicrosoft.NETFramework64версия
Для 32-битной версии — Framework32. Вы можете не указывать полный путь, а добавить путь к вашей системной переменной.

Есть такая особенность cmd, когда вы меняете путь и указываете другой диск, то вы можете увидеть тот же самый путь. Кажется что ничего не происходит при выполнении команды:

 CD другой_диск:папка1папка2

.

Для смены диска вам нужно применять CD c ключем /D или явным образом указывать имя_диска: после ввода команды.

Пример 1:

cd e:папка1папка2
e:

Пример 2:

cd /D e:папка1папка2

здесь е — имя диска, которое отличается от текущего.

Методика выявления ошибок компиляции

У вас на этапе подготовки могут возникать различного рода ошибки и первое что вам нужно выяснить — это к чему относится ваша ошибка. То есть локализировать проблему. Для этого выясняем на каком уровне возникает проблема. Относится ли она к системе, к командной оболочке, к компилятору, текстовому редактору или к опечатке, ошибке в скрипте.

  1. Проверить запускается ли cmd и отрабатывают ли простейшие команды.
  2. Проверить ваш компилятор на предмет компиляции из командной строки.
  3. Проверить системные переменные
  4. Проверить установлен ли плагин NppExec
  5. Запускает ли он скрипты
  6. Связанны ли скрипты с макросами NppExec.
  7. Отрабатывают ли макросы совместно со скриптами.

Для более подробного вывода ошибок при компиляции смотрите документацию к вашей системе сборки, к компилятору и другим модулям, которые вы используете.

Теперь, когда мы создали, отладили и наши скрипты, убедились, что они работают предсказуемо, создали макросы для них, мы можем связать их с клавишами быстрого вызова. Как это сделать?
Мы не назначили горячие клавиши при создании скриптов, потому как назначение их, клавиш быстрого вызова, в окне создания скрипта ограничены.

Нам не предоставляется большого выбора из сочетаний клавиш на клавиатуре. К тому-же данные комбинации клавиш у нас могут быть заняты. Сделать назначение горячих клавиш или клавиш быстрого вызова мы можем в меню: Максросы/Измен.соч.клав./Удалить макро.

Какие у вас могут быть резоны познакомиться с командной строкой?

Вам может быть не придется использовать её часто. Но знать о её существовании просто необходимо. Например, на начальном этапе обучения вам нужно познакомиться с опциями компилятора, компоновщика, системы сборки и протестировать их. Вам понадобятся знание того, какие аргументы и ключи принимает программа на входе и что она может возвращать.
Не всегда у вас будет возможность использовать умные и дорогие IDE. И не потому что они могут оказаться слишком дороги, а по той причине, что вы просто не сможете установить их на некоторые системы. В других системах этого могут требовать меры безопасности. Вам может понадобится протестировать каждый модуль, такой как компилятор, линковщик, компановщик, систему сборки, систему контроля версий отдельно. То есть каждую часть вашей системы разработки. Вам может понадобится проверить корректность их работы по отдельности. В некоторых случаях вам может понадобится использовать другой компилятор с вашей IDE или любой другой отдельный модуль. Собирание кубиков графического интерфейса в IDE не делает из вас программиста. Вам понадобятся знания языков, знания архитектуры, знание некоторых скриптов, математические знания и т.д, то есть умение использовать в работе многих инструментов. В различных терминалах и консолях командная строка работает по разному. Это зависит от вашей консоли или терминала. Общие принципы работы для некоторых схожи, но для некоторых могут отличаться очень сильно. Командная строка — это только дополнительный инструмент в ваших руках, а насколько вы его эффективно использовать зависит от вас. В случае, когда вы занимаетесь opensource проектом, вы сможете предоставить командные файлы вашим пользователям для сборки, для тестирования проекта, развертывания проекта и тд. Для команды разработчиков такой подход может помочь более эффективно взаимодействовать. При этом это может оказаться выходом за пределы «комфорта» и нести дополнительные риски. Но использование любых инструментов несет в себе риски, во многом это определяется надежностью инструментов и умением их использовать.

В чем преимущество такого подхода к компиляции? Для обучающихся это приобретение новых навыков работы с командной строкой и связывание кода скриптов с текстовым редактором, изучение компиляции из командной строки. Экономия времени на тестировании небольшого кода без загрузки тяжелых IDE. В некоторых случаях, когда нет возможности установить полноценную IDE такой подход может выручить. Изучение скриптов для командной строки позволяет компилировать из исходников там где вообще нет никакой возможности применять UI, например на серверах. И хотя там не будет возможности использовать текстовые редакторы типа Notepad++, будет возможность использовать текстовые процессоры типа vi, vim, emacs, nano и тд. Основные принципы работы остаются теми же.

Мы с вами, несколько обзорно, познакомились с компиляцией из командной строки, с написанием скриптов для этого, с заданием и использованием системных переменных,
со связыванием кода скриптов с макросами Notepad++, c внутренними переменными Notepad++. Надеюсь данная статья будет полезна обучающимся. Здесь я описал подробно общие методики. Прежде чем обращаться в службу поддержки или отправлять баги, вам следует самостоятельно все выяснить. Во многих случаях может оказаться, что это ваша ошибка или опечатка, а не инженеров разработчиков.

Современные IDE имеют собственные консоли или эмуляторы консолей. Так что вам не обязательно использовать cmd для сборки. К тому же кроме cmd существует достаточно много подобных инструментов. Изучение работы скриптов может помочь вам в будущем в освоении таких инструментов, как системы сборки, компиляторов, компоновщиков, линковщиков. К тому же некоторые SDK не предоставляют графического пользовательского интереса(GUI), использование GUI может быть запрещено политикой безопасности, так как несет дополнительные угрозы в критических для этого областях применения.

Надеюсь данная публикация будет полезной в освоении, расширении новых знаний и навыков.

<<< Мои публикации на Habr >>>

Полезные ссылки

Как создать резервную копию и восстановить реестр в Windows
Применимо к: Windows 7, Windows 8.1, Windows 10 (Официальная поддержка Microsoft):
support.microsoft.com/ru-ru/help/322756

Материалы для дополнительного изучения

notepad-plus-plus.org

Управление Java classpath (UNIX и Mac OS X)

Управление Java classpath (Windows)

Java — the Java application launcher

Для ознакомления:
Избавляемся от «исторических причин» в cmd.exe
habr.com/ru/post/260991

Сравнение командных оболочек
ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%BD%D1%8B%D1%85_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%B5%D0%BA

Using instructions I found on stackoverflow I am trying to use NppExec to compile my C files, run them, and show their output, all within Notepad++.

However when I try to use it I get this error message (see below) in Console.

Does anyone know how I fix this?

TIA
Roger

These are the instructions I followed:

I am using MinGW compiler.

Go to plugins->NppExec->Execute

paste this into there

NPP_SAVE

CD $(CURRENT_DIRECTORY)

C:MinGW32bingcc.exe -g «$(FILE_NAME)»

a
(Remember to give above four lines separate lines.)

Now, give name, save and ok.

Restart Npp.

Go to plugins->NppExec->Advanced options.

Menu Item->Item Name (I have C compiler)

Associated Script-> from combo box select the above name of script.

Click on Add/modify and Ok.

Now assign shortcut key as given in first answer.

Current directory: C:UsersRogerDocumentsPersonalUNBF19CS2263Programs
C:MinGW32bingcc.exe -g "playStack.c"
; about to start a child process: "C:MinGW32bingcc.exe -g "playStack.c""
CreateProcess() failed with error code 2:
The system cannot find the file specified.

a
; about to start a child process: "a"
CreateProcess() failed with error code 2:
The system cannot find the file specified.

Поскольку я давно не был на Яве, я забыл много вещей! Поэтому недавно я решил немного понаблюдать каждый день, вспоминать и практиковаться! Тогда я столкнулся с такой проблемой в сегодняшнем упражнении:


public class Helloworld{
    public static void main(String[] args){
        System.out.println("Изучай Java!");// Выводим содержимое в кавычках, не важно, английский это или китайский
    }
}

Прежде всего, этот код не проблема! Но когда я компилирую с помощью командной строки, у меня возникает эта проблема:

Это очень удручает. , , Я дважды проверил фрагмент кода и обнаружил, что код был полностью правильным! Так что пошло не так? Очень вдумчивый … Позже я переписал тот же код на планшете, который поставляется с компьютером, и обнаружил, что он может нормально работать после компиляции … Как показано ниже:

Это потрясающе! Позже, после моих тщательных исследований, я обнаружил, что формат кодировки по умолчанию в Notepad ++ не соответствует формату компьютера. Компьютер использует формат кодирования GBK! Однако формат кодирования по умолчанию в Notepad ++ — UTF-8-BOM (как показано на рисунке ниже). Из-за различных форматов кодирования компьютер не может точно скомпилировать его, что дает искаженные символы!

Таким образом, наше решение состоит в том, чтобы изменить формат кодирования по умолчанию в Notepad ++ на формат кодирования, совместимый с GBK, и вы можете скомпилировать правильный результат! (Как показано ниже :)

Примечание. Лучше изменить кодировку перед написанием кода!

Страница 1 из 2


  1. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Здравствуйте, все!
    Решил перейти от компиляции. линковки и редактирования asm-файлов в Far на Notepad++. Установил NppExec. Создал скрипт

    1. cd «$(CURRENT_DIRECTORY)»
    2. $(masm64)binml64 /Cp /c /I»$(masm64)Include» $(FILE_NAME)
    3. if $(EXITCODE) !=0 goto exit
    4. $(masm64)binlink /SUBSYSTEM:windows /LIBPATH:»$(masm64)Lib» /entry:WinMain $(NAME_PART).obj /LARGEADDRESSAWARE:NO /BASE:0x400000 /STUB:$(masm64)binstubby.exe
    5. if $(EXITCODE) !=0 goto exit

    Создание и запуск ехе-файла проходит на ура, но дальше начинаются вопросы.

    1. Как перед компиляцией удалять старый exe и ненужный obj? В bat-файле это решалось так
      1. if exist %filename%.exe del %filename%.exe
      2. if exist %filename%.obj del %filename%.obj

      В NppExec exist и del/delete не понимают

    2. При компиляции и линковке неизбежны ошибки и информацию о них я получал в файл errors.txt
      1. %masm64_path%binml64 /Cp /c /I»%masm64_path%Include» %filename%.asm >> errors.txt

      NppExec ни >>, ни > не понимает.

    3. Чтобы не плодить кучу разных bat-файлов для создания GUI, CONSOLE, DLL, SYS я первой строкой в asm-файле писал

      а в bat-файле шел разбор

      1. for /f «eol=# tokens=2-3» %%A in (%filename%.asm) do (

      где происходит переход на метку в bat-файле :CONSOLE, :GUI, : DLL и далее происходит сборка exe-/dll-/sys-файла по своим правилам. Как подобное организовать в Notepad++?


  2. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Часть проблем решил, скрипт для NppExec

    1. cls // очищаем консоль NppExec
    2. cd «$(CURRENT_DIRECTORY)»
    3. cmd /c if exist errors.txt del errors.txt // удалил программный мусор от предыдущего
    4. cmd /c if exist $(NAME_PART).obj del $(NAME_PART).obj // удачного или неудачного
    5. cmd /c if exist $(NAME_PART).exe del $(NAME_PART).exe // проекта
    6. cmd /c $(masm64)binml64 /Cp /c /I»$(masm64)Include» $(FILE_NAME) >> errors.txt
    7. if $(EXITCODE) !=0 goto exit // если есть ошибки — выведу их в консоль NppExec
    8. cmd /c $(masm64)binlink /SUBSYSTEM:windows /LIBPATH:»$(masm64)Lib» /entry:WinMain $(NAME_PART).obj /LARGEADDRESSAWARE:NO  /BASE:0x400000 /STUB:$(masm64)binstubby.exe >> errors.txt
    9. if $(EXITCODE) !=0 goto exit // если есть ошибки — выведу их в консоль NppExec
    10. cmd /c $(NAME_PART).exe // запускаю получившийся экзешник
    11. del errors.txt // в случае запуска удаляю ненужные файлы
    12. exit // если ошибок нет — выходим
    13. :exit // если ошибки есть, тогда выводим ошибки в консоль NppExec
    1. Как предусмотреть в одном скрипте создание exe(GUI/CONSOLE), dll, sys?
    2. Как в скрипте делать вывод длинных строк? В bat-файле я экранировал переход на другую строку символом «^»
    3. Как в notepad++ подсветить, допустим красным, строки с ошибками компиляции?
  3. Я бы посоветовал перейти на nmake или make и написание .mak скриптов. Все прочие примочки по сравнению с nmake — пустая трата времени.


  4. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Допустим, при компиляции обнаружены ошибки. Список ошибок в файле errors.txt. Как в notepad++ подсветить, допустим красным, строки с ошибками в файле tut_03a.asm?

    Assembling: tut_03a.asm
    tut_03a.asm(9) : error A2006:undefined symbol : ebt
    tut_03a.asm(16) : error A2008:syntax error : in instruction
    tut_03a.asm(19) : error A2006:undefined symbol : rsx

    Пропуск первой строки, во второй и остальных строках в скобках номера строк с ошибками. Только увы, я синтаксиса NppExec не знаю (но пытаюсь разобраться). Может быть появится HESH, будет у кого спросить


  5. M0rg0t

    M0rg0t

    Well-Known Member

    Публикаций:

    0

    Регистрация:
    18 окт 2010
    Сообщения:
    1.566

    Mikl___, у меня такой для 64 бит гуи ехе:

    1. $(PATH)ML64 /c «$(FULL_CURRENT_PATH)»
    2. $(PATH)LINK «$(CURRENT_DIRECTORY)$(NAME_PART).obj» /SUBSYSTEM:WINDOWS /ENTRY:main
    3. cmd /c del «$(CURRENT_DIRECTORY)$(NAME_PART).obj»

    А такой для 32 бит

    1. $(PATH)ML /nologo -c -coff «$(FULL_CURRENT_PATH)»
    2. $(PATH)LINK /nologo «$(CURRENT_DIRECTORY)$(NAME_PART).obj» /SUBSYSTEM:WINDOWS
    3. cmd /c del «$(CURRENT_DIRECTORY)$(NAME_PART).obj»

    — Сообщение объединено, 5 мар 2023

    да вроде никак, оно пишется вниз в консоль (в плане , окошко вывода) и все.
    тут все грустно весьма в нотепаде с масмом, но иного варианта нет. Radasm/Winasm, если они еще живы. В студии то еще хуже.


  6. alex_dz

    alex_dz

    Active Member

    Публикаций:

    0

    Регистрация:
    26 июл 2006
    Сообщения:
    168


  7. algent

    algent

    Member

    Публикаций:

    0

    Регистрация:
    11 апр 2018
    Сообщения:
    81

    Как-то видел тему — Python плагин под notepad++. Может поможет ?


  8. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584


  9. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    1. первая строка в моих asm-файлах

      мне нужно получить слово GUI/CONSOLE/SYS/DLL и перейти на метку :GUI/ :CONSOLE/ :SYS/ : DLL и компилировать/линковать. В скрипте NotePadExec пишу

      1. set masm64=путь_к_ml64.exe_и_link.exe
      2. cd «$(CURRENT_DIRECTORY)»
      3. cmd /c for /f «eol=# tokens=2» %A in ($(FILE_NAME)) do exit /b && goto %A
      4. :CONSOLE //пока «пустышка»
      5. :GUI //компиляция и линковка с /SUBSYSTEM:WINDOWS

      если вместо goto подставить @echo, тогда на экран выводится «GUI» но на goto не реагирует, происходит выход по EXIT
      Вариант

      1. cmd /c for /f «eol=# tokens=2» %A in ($(FILE_NAME)) do set kind_of_file = %A && exit /b

      также не работает

    2. Как подсветить в asm-файле строки с ошибками, если в результате компиляции сформировался файл errors.txt вида
      1. tut_03a.asm(14) : error A2008:syntax error : in instruction
      2. tut_03a.asm(9) : error A2006:undefined symbol :
    3. Как сворачивать процедуры/структуры?

  10. mantissa

    mantissa

    Member

    Публикаций:

    0

    Регистрация:
    9 сен 2022
    Сообщения:
    72

    По поводу 2 пункта:
    Если errors.txt имеет вид:

    1. tut_03a.asm(14) : error A2008:syntax error : in instruction
    2. tut_03a.asm(9) : error A2006:undefined symbol :

    То, можно вывести номер строк в файле tut_03a.asm следующим разбором:

    1. cd «$(CURRENT_DIRECTORY)»
    2. cmd /c for /f «tokens=1,2 delims=() skip=1» %i in (errors.txt) do if %i equ $(FILE_NAME) echo %j

    он выведет на консоль числа 14 и 9, потом их нужно как-то передать в скрипт NppExec, потому что написав в цикле выше команду SET, NppExec не будет знать о этой переменной, так как она выполнялась в cmd. Можно попробовать вывести номер строк в файле, а уже оттуда прочитать их в NppExec:

    1. cd «$(CURRENT_DIRECTORY)»
    2. cmd /c for /f «tokens=1,2 delims=() skip=1» %i in (errors.txt) do if %i equ $(FILE_NAME) echo %j >> temp.txt
    3. потом читаем в NppExec из temp.txt

    После этого, зная номера строк, подсветить их можно с помощью

    1. sci_sendmsg SCI_MARKERDELETE n n1

    , где n — номер строки, а n1 — номер маркера (подробнее тут)


  11. mantissa

    mantissa

    Member

    Публикаций:

    0

    Регистрация:
    9 сен 2022
    Сообщения:
    72

    Для передачи из консоли в NppExec скрипт достаточно:
    Включить перенос консольного вывода в переменную $(OUTPUT) командой

    Теперь ее можно вывести или назначить другой переменной:


  12. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Как сворачивать процедуры/структуры для asm в Notepad++?


  13. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Привет, всем! Может кто-нибудь подсказать как запустить hiew32 + asm-файл из-под Notepad++?
    Через «Запуск (F5)» понятно как

    06.jpg

    А как тоже самое можно сделать через NppExec?


  14. alex_dz

    alex_dz

    Active Member

    Публикаций:

    0

    Регистрация:
    26 июл 2006
    Сообщения:
    168


  15. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584


  16. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    Здравствуйте, все!
    Вопрос о подсветке синтаксиса в Notepad++. Стандартная поставка → Меню пункт «Синтаксисы» → «A» → «Assembly». Вроде расцветка устраивает, но как добавить свертку по процедуре (proc-endp), структуре/объединению (struct/union-ends), блоку комментариев (comment символ-символ), целиком по секции (.data, .data?, .code). Пока нашел непонятный functionList→asm.xml, окраска ключевых слов в stylers.model.xml, сами ключевые слова в langs.model.xml


  17. GRAFik

    GRAFik

    Active Member

    Публикаций:

    0

    Регистрация:
    14 мар 2020
    Сообщения:
    323

    Mikl___, спасибо. Интересная идея. Тоже хочу попробовать (куда крестьяне — туда и Марфа Крива :) )

    P.S. А коротенькая сказочка про дяденьку Римуса о том, как он дурным примером спровоцировал браца Кролика поставить себе Notepad++ и плагин NppExec — будет? :)

    Последнее редактирование модератором: 26 мар 2023


  18. Mikl___

    Mikl___

    Супермодератор
    Команда форума

    Публикаций:

    14

    Регистрация:
    25 июн 2008
    Сообщения:
    3.584

    GRAFik, потерпи немного, всё опишу…


  19. mantissa

    mantissa

    Member

    Публикаций:

    0

    Регистрация:
    9 сен 2022
    Сообщения:
    72

    Прокачал скрипт для открытия нужного инструмента после компиляции не автоматом, а по запросу. После компиляции и отчистки не нужного прыгаем на метку DEBUG

    1. cmd /c del $(NAME_PART)_err.txt
    2. cmd /c del $(NAME_PART).obj

    А там запрашиваем пользователя ввести в инпут 1 2 или 3, и в зависимости что введено открывается нужная программа, а если что-то другое или вообще ничего или окно ввода просто закрыть то завершаемся.

    1. echo «Для открытия x64dbg введите 1»
    2. echo «Для открытия hview введите 2»
    3. echo «Для открытия ResourceHacker введите 3»
    4. else if $(INPUT) == 2 then
    5. else if $(INPUT) == 3 then

    Итого:
    После компиляции:

    upload_2023-3-19_23-10-26.png

    Например хотим ResourceHacker — вводим 3 и получаем:

    upload_2023-3-19_23-11-43.png

    Только вместо простого echo уже подставим


  20. alex_dz

    alex_dz

    Active Member

    Публикаций:

    0

    Регистрация:
    26 июл 2006
    Сообщения:
    168

    у вас там очепятка
    hview -> hiew

Страница 1 из 2


WASM

Понравилась статья? Поделить с друзьями:
  • Ошибка в nfs rivals 0xc000007b
  • Ошибка в scp 087 и
  • Ошибка в minecraft с текстурами
  • Ошибка в nexus access violation
  • Ошибка в renpy expected statement