cmder/bin/alias.bat

61 lines
1.8 KiB
Batchfile
Raw Normal View History

2013-07-09 15:43:50 +08:00
@echo off
2014-12-25 03:20:16 +08:00
set ALIASES=%CMDER_ROOT%\config\aliases
setlocal
:: handle quotes within command definition, e.g. quoted long file names
set _x="%*"
set _x=%_x:"=%
:: check command usage
if ["%_x%"] == [""] echo Use /? for help & echo. & goto :p_show
if ["%1"] == ["/?"] goto:p_help
if ["%1"] == ["/reload"] goto:p_reload
:: /d flag for delete existing alias
if ["%1"] == ["/d"] goto:p_del %*
if ["%2"] == [""] echo Insufficient parameters. & goto:p_help
:: validate alias
for /f "delims== tokens=1" %%G in ("%_x%") do set alias=%%G
set _temp=%alias: =%
if not ["%_temp%"] == ["%alias%"] (
echo Your alias name can not contain a space
endlocal
goto:eof
)
:: replace already defined alias
findstr /b /v /i "%alias%=" "%ALIASES%" >> "%ALIASES%.tmp"
2014-12-25 03:20:16 +08:00
echo %* >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp"
doskey /macrofile="%ALIASES%"
endlocal
goto:eof
:p_del
2014-12-25 03:20:16 +08:00
findstr /b /v /i "%2=" "%ALIASES%" >> "%ALIASES%.tmp"
type "%ALIASES%".tmp > "%ALIASES%" & @del /f /q "%ALIASES%.tmp"
doskey /macrofile=%ALIASES%
goto:eof
:p_reload
2014-12-25 03:20:16 +08:00
doskey /macrofile="%ALIASES%"
echo Aliases reloaded
goto:eof
:p_show
2014-12-25 03:20:16 +08:00
type "%ALIASES%" || echo No aliases found at "%ALIASES%"
goto :eof
:p_help
echo.Usage:
2015-01-09 01:43:45 +08:00
echo. alias [/reload] [/d] [name=full command]
echo. /reload Reload the aliases file
echo. /d Delete an alias (must be followed by the alias name)
echo.
echo. If alias is called with any parameters, it will display the list of existing aliases.
echo. In the command, you can use the following notations:
echo. $* allows the alias to assume all the parameters of the supplied command.
echo. $1-$9 Allows you to seperate parameter by number, much like %%1 in batch.
echo. $T is the command seperator, allowing you to string several commands together into one alias.
echo. For more information, read DOSKEY/?