有没有办法让我的Windows 7系统上的所有DOS shell都有这个命令别名?
doskey h=doskey /history
这是否可行,就像Bash shell可以加载.bash_profile一样?我正在寻找一个不需要PowerShell的答案。
答案 0 :(得分:4)
在这里,DOS确实不是正确的词。在当前版本的Windows中,您拥有CMD.exe shell,其中包含许多与DOS(dir,copy等)相同的命令。您可能还有PowerShell。在PowerShell中,可以轻松配置别名以始终可用。创建一个名为$home\Documents\WindowsPowerShell\profile.ps1
的文件并创建您的别名,如下所示:
New-Alias h Get-History # Don't execute as it already exists
但是,PowerShell已经为您创建了这个特殊的别名。只需打开PowerShell,执行一些命令,然后执行h
。
至于CMD.exe,这个blog post描述了如何配置CMD.exe来做同样的事情。
答案 1 :(得分:1)
简而言之:否。命令处理器(cmd.exe和command.com)不支持别名,因为你知道它们来自bash和其他shell。
更长的答案:您可以通过制作带有参数(%1等)的聪明批处理文件并将它们传递给真实命令来创建“假”别名。这有可能以许多光荣的方式分解,但它可能会为您的情况提供可用的解决方法。
答案 2 :(得分:0)
根据Keith Hills的回答,这是我为此创建的批处理文件:
@ECHO OFF
:: to install, place this dos_profile.bat script in the location you want
:: it to reside and then run this batch script with the argument "register"
ECHO Commands defined by dos_profile.bat : F7, h, ls, cp, mv
IF "%1"=="register" (
REG.exe ADD "HKCU\Software\Microsoft\Command Processor\Autorun" /ve /t REG_SZ /d "%CD%\dos_profile.bat" /f
ECHO The DOS profile is registered. Load a new command prompt and test a command.
)
@DOSKEY LS=DIR $*
@DOSKEY CP=COPY $*
@DOSKEY MV=MOVE $*
@DOSKEY H=DOSKEY /HISTORY