2012-11-27 78 views
1

有沒有辦法讓我的Windows 7系統上的所有DOS shell都有這個命令別名?命令別名可以自動添加到DOS外殼?

doskey h=doskey /history 

這是可能的,就像Bash shell可以加載.bash_profile一樣嗎?我正在尋找一個不需要PowerShell的答案。

+0

這似乎是相似的問題:http://superuser.com/questions/150244/command-別名在這個問題上得到解決的答案似乎比被接受的答案更詳細。在研究這個問題時,我發現Windows 7中不再支持舊的autoexec.nt和config.nt,但如果您運行的是舊版本的Windows,則可能適用於您。 –

回答

4

那麼DOS在這裏並不是真正的詞。在當前版本的Windows中,您有CMD.exe外殼,它具有許多與DOS相同的命令(目錄,副本等)。你也可能有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做同樣的事情。

+0

根據你的回答,我到目前爲止創建了一個批處理文件(見下文),它將爲你註冊配置文件腳本。 – djangofan

1

簡而言之:不。命令處理器(cmd.exe和command.com)不支持別名,因爲您知道它們來自bash和其他shell。

較長的答案:您可以通過製作採用參數(%1等)的巧妙批處理文件並將它們傳遞給實際命令來創建「假」別名。這有可能以許多光榮的方式分解,但它可能會爲您提供一種可用的解決方法。

0

基於基思山的回答,這裏是我創造了這樣做的批處理文件:

@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