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



在一个命令中编译和执行Windows cmd中任何编程语言的源代码可能会很麻烦,因为它通常是一个大命令,您必须至少键入一次,之后可以使用向上箭头或F7在命令历史记录中访问它。

例如,编译和执行 Java 的命令通常如下所示:

cls & javac packagenameClass.java && java packagename.Class

为了方便起见,我创建了一个批处理文件,该文件接受用户输入并回显完整的命令。
然后,您可以复制该行,粘贴并执行一次,然后它位于命令历史记录中,可通过向上箭头快速访问。

我想进一步简化最后一步,并将批处理文件创建的命令直接推送到您的命令历史记录中,但我找不到一种方法来做到这一点。
即使有@echo on,批处理文件执行的命令也不会进入用户的历史记录。
Doskey的帮助没有提到任何关于添加历史项目的内容。

有人能想到解决方案吗?

解决方法

作为一种解决方法,我在批处理文件中注册了一个带有doskey的宏:

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

然后,运行批处理文件后,只需键入 jc 即可执行整个命令。
这已经非常方便了,所以如果找不到解决方案,我会继续使用它。

您可以使用此方法的修改版本:

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

最新更新