【发布时间】:2019-03-08 16:15:00
【问题描述】:
在一个命令中从 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 来执行整个命令。
这已经很方便了,所以如果找不到解决方案,我会继续使用它。
【问题讨论】:
-
那么为什么不将宏保存到文件并通过运行 doskey 轻松加载它们。
doskey /macrofile=mymacros.txt -
@Squashman 文件名(例如我的示例中的
packagename\Class.java)会随着每个项目而变化,因此充满宏的静态文件没有意义。 -
您是否阅读了 DOSKEY 命令的帮助。您可以像处理批处理文件一样向宏传递参数。
-
@Squashman 好吧,是的,这就是我实施解决方法的方式。将我的批处理文件生成的命令传递给 doskey 而不是回显它。我想我的问题没有说清楚。
-
您正在对宏中的文件名进行硬编码。我是说您不必对宏中的文件名进行硬编码。它们可以作为参数传递给宏。
标签: batch-file cmd