您可以从批处理文件向命令行历史记录添加条目吗?

时间:2018-10-03 12:20:42

标签: batch-file cmd

在一个命令中为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 :(得分:1)

您可以使用this method的修改版本:

@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));