Можете ли вы добавить записи в историю командной строки из командного файла? - PullRequest
0 голосов
/ 03 октября 2018

Компиляция и выполнение исходного кода для любого языка программирования из Windows cmd в одной команде может быть хлопотным, поскольку обычно это большая команда, которую необходимо набрать хотя бы один раз, после чего она становится доступной в истории команд с помощью клавиши Up.Стрелка или F7.

Например, команда для компиляции и выполнения Java обычно выглядит следующим образом:

cls & javac packagename\Class.java && java packagename.Class

Для удобства я создал пакетный файл, который принимает пользовательский ввод и выводит на экранзавершить команду.
Затем вы можете скопировать эту строку, вставить ее и выполнить один раз, а затем она будет в вашей истории команд, быстро доступна через стрелку вверх.

Я хотел бы упростить этот последний шаг дажедалее и вставьте команду, созданную командным файлом, непосредственно в историю команд, но я не могу найти способ сделать это.
Даже с @echo on ни одна из команд, выполненных командным файлом, никогда не вводитсяистория пользователя.
В справке Doskey ничего не сказано о добавлении элементов истории.

Можеткто-нибудь думает о решении?

Обходной путь

В качестве обходного пути я регистрирую макрос с doskey внутри пакетного файла:

doskey jc=cls ^& javac packagename\Class.java ^&^& java packagename.Class

Затем, как только вы запуститекомандный файл, вам нужно всего лишь набрать jc, чтобы выполнить всю команду.
Это уже довольно удобно, поэтому, если решение не найдено, я буду продолжать использовать это.

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете использовать модифицированную версию , этот метод :

@if (@CodeSection == @Batch) @then


@echo off

rem Use %SendKeys% to send keys to the keyboard buffer
set SendKeys=CScript //nologo //E:JScript "%~F0"

rem Send to the keyboard buffer the desired line
%SendKeys% "cls & javac packagename\Class.java && java packagename.Class{ENTER}"

rem Read it, so it is inserted in the command-line history
set /P "="

goto :EOF


@end


// JScript section

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.SendKeys(WScript.Arguments(0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...