日期:2014-05-16  浏览次数:20994 次

Windows命令行中, 类似于linux的history命令

在写这篇博客的时候: ImageMagick: 图像处理工具包(使用它在图片中插入文字注释)

我在windows的命令行中, 利用了ImageMagick的命令行工具, 进行了多种尝试.

因为不同的参数会产生不同的效果, 所以我想记录下来我使用过的命令, 以及他们的参数(这些参数好长好长...).

?

于是我随手键入了history,

发现得到的回答是"history 不是内部或外部命令,也不是可运行的程序或批处理文件。"

?

用了这么久的windows,

仿佛这是我第一次想把history保存下来呢?

也许是因为以前使用的那些命令的参数都不够复杂,

也许是对于一些复杂的应用, 我都会封装成单独的脚本

?

总之这次感觉很强烈, 于是, 经过调查, 在这个链接:Display Command History , 发现正解如下:

显示history的命令:

DOSKEY /history

?

如果这个命令不好用, 使用下面命令重新安装DOSKEY

DOSKEY /reinstall

?

?

?

顺便详细看了一下DOSKEY这个命令,

原来这个命令是可以在命令行中定义宏的.

msdn的连接如下(在这个连接中, 我还知道了Alt+F7这个快捷键, 虽然没有F7更令人高兴, 但也算实用):

Doskey #MSDN

?

下面这个连接有一些不同的例子

DOSKEY and Command Macros #The Windows NT Command Shell

?

参照上面的连接, 我们可以这样使用DOSKEY(关于下面命令的详细解析,参考上面两个连接)

定义ls命令
C:\>doskey ls=dir $*

?

The following macro definition creates a command that displays the user name of the currently logged-on user:
1. C:\>doskey myname=for /f "delims=\ tokens=2" %i in ('whoami') do @echo %i
2. C:\>myname
3. TimHill
?
This example creates a DIRCOUNT macro that counts the number of directories in a specified directory
C:\>doskey dircount=dir $* $B find "<DIR>" /c
?
Macros can be used with any Windows NT application which accepts line-by-line command input. However, each macro is explicitly defined for a specific application. By default, macros are defined for use by the command shell, CMD.EXE. The /EXENAME switch defines a macro for another application. For example, to define an EXIT macro for use with FTP, enter:
C:\>doskey /exename=ftp.exe exit=bye
?

对于上面的命令, 我更喜欢使用gunwin32,或者自己编写脚本来实现,

但是既然看到这里了便记录下来, 说不定将来什么时候能用上.

?

?

?

顺着这次调查, 我还来到了这里:

How To Use Automatic Completion with a Command Prompt in Windows XP

在这里知道了如何在cmd命令行中, 自动补全文件名(以及,文件夹名)

?

?

?

我以前写的一些关于windows命令行的博客:

扩展Windows命令行窗口(cmd),支持复制粘贴等操作

Windows命令行窗口中的快捷键
Windows: 也谈“触手可及的命令提示符”

?

?

?