-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Enhanced alias.bat to allow file storage path
- Loading branch information
Dax T. Games
committed
Mar 2, 2016
1 parent
8fa151d
commit 997bd5c
Showing
4 changed files
with
125 additions
and
45 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,64 +1,131 @@ | ||
@echo off | ||
|
||
set ALIASES=%CMDER_ROOT%\config\aliases | ||
setlocal | ||
:: handle quotes within command definition, e.g. quoted long file names | ||
set _x="%*" | ||
set _x=%_x:"=% | ||
|
||
if "%aliases%" == "" ( | ||
set ALIASES=%CMDER_ROOT%\config\user-aliases.cmd | ||
) | ||
|
||
setlocal enabledelayedexpansion | ||
|
||
if "%~1" == "" echo Use /? for help & echo. & goto :p_show | ||
|
||
:: 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 arg is an existing alias, display it | ||
if ["%2"] == [""] ( | ||
doskey /macros | findstr /b %1= && goto:eof | ||
echo Insufficient parameters. & goto:p_help | ||
|
||
rem #region parseargument | ||
goto parseargument | ||
|
||
:do_shift | ||
shift | ||
|
||
:parseargument | ||
set currentarg=%~1 | ||
|
||
if /i "%currentarg%" equ "/f" ( | ||
set aliases=%~2 | ||
shift | ||
goto :do_shift | ||
) else if /i "%currentarg%" == "/reload" ( | ||
goto :p_reload | ||
) else if "%currentarg%" equ "/?" ( | ||
goto :p_help | ||
) else if /i "%currentarg%" equ "/d" ( | ||
if "%~2" neq "" ( | ||
if "%~3" equ "" ( | ||
:: /d flag for delete existing alias | ||
call :p_del %~2 | ||
shift | ||
goto :eof | ||
) | ||
) | ||
) else if "%currentarg%" neq "" ( | ||
if "%~2" equ "" ( | ||
:: Show the specified alias | ||
doskey /macros | findstr /b %currentarg%= && exit /b | ||
echo insufficient parameters. | ||
goto :p_help | ||
) else ( | ||
:: handle quotes within command definition, e.g. quoted long file names | ||
set _x=%* | ||
) | ||
) | ||
rem #endregion parseargument | ||
|
||
if "%aliases%" neq "%CMDER_ROOT%\config\user-aliases.cmd" ( | ||
set _x=!_x:/f %aliases% =! | ||
|
||
if not exist "%aliases%" ( | ||
echo ;= @echo off>"%aliases%" | ||
echo ;= rem Call DOSKEY and use this file as the macrofile>>"%aliases%" | ||
echo ;= %%SystemRoot%%\system32\doskey /listsize=1000 /macrofile=%%0%%>>"%aliases%" | ||
echo ;= rem In batch mode, jump to the end of the file>>"%aliases%" | ||
echo ;= goto:eof>>"%aliases%" | ||
echo ;= Add aliases below here>>"%aliases%" | ||
) | ||
) | ||
|
||
:: validate alias | ||
for /f "delims== tokens=1" %%G in ("%_x%") do set alias=%%G | ||
set _temp=%alias: =% | ||
for /f "delims== tokens=1,2 usebackq" %%G in (`echo "%_x%"`) do ( | ||
set alias_name=%%G | ||
set alias_value=%%H | ||
) | ||
|
||
:: leading quotes added while validating | ||
set alias_name=%alias_name:~1% | ||
|
||
:: trailing quotes added while validating | ||
set alias_value=%alias_value:~0,-1% | ||
|
||
if not ["%_temp%"] == ["%alias%"] ( | ||
::remove spaces | ||
set _temp=%alias_name: =% | ||
|
||
if not ["%_temp%"] == ["%alias_name%"] ( | ||
echo Your alias name can not contain a space | ||
endlocal | ||
goto:eof | ||
exit /b | ||
) | ||
|
||
:: replace already defined alias | ||
findstr /b /v /i "%alias%=" "%ALIASES%" >> "%ALIASES%.tmp" | ||
echo %* >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" | ||
findstr /b /v /i "%alias_name%=" "%ALIASES%" >> "%ALIASES%.tmp" | ||
echo %alias_name%=%alias_value% >> "%ALIASES%.tmp" && type "%ALIASES%.tmp" > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" | ||
doskey /macrofile="%ALIASES%" | ||
endlocal | ||
goto:eof | ||
exit /b | ||
|
||
:p_del | ||
findstr /b /v /i "%2=" "%ALIASES%" >> "%ALIASES%.tmp" | ||
set del_alias=%~1 | ||
findstr /b /v /i "%del_alias%=" "%ALIASES%" >> "%ALIASES%.tmp" | ||
type "%ALIASES%".tmp > "%ALIASES%" & @del /f /q "%ALIASES%.tmp" | ||
doskey %del_alias%= | ||
doskey /macrofile=%ALIASES% | ||
goto:eof | ||
|
||
:p_reload | ||
doskey /macrofile="%ALIASES%" | ||
echo Aliases reloaded | ||
goto:eof | ||
exit /b | ||
|
||
:p_show | ||
type "%ALIASES%" || echo No aliases found at "%ALIASES%" | ||
goto :eof | ||
doskey /macros|findstr /v /r "^;=" | sort | ||
exit /b | ||
|
||
:p_help | ||
echo.Usage: | ||
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. alias [options] [alias=full command] | ||
echo. | ||
echo.Options: | ||
echo. | ||
echo. /d [alias] Delete an [alias]. | ||
echo. /f [macrofile] Path to the [macrofile] you want to store the new alias in. | ||
echo. Default: %cmder_root%\config\user-aliases.cmd | ||
echo. /reload Reload the aliases file. Can be used with /f argument. | ||
echo. Default: %cmder_root%\config\user-aliases.cmd | ||
echo. | ||
echo. If alias is called with no parameters, it will display the list of existing aliases. | ||
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/? | ||
exit /b |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
;= @echo off | ||
;= rem Call DOSKEY and use this file as the macrofile | ||
;= %SystemRoot%\system32\doskey /listsize=1000 /macrofile=%0% | ||
;= rem In batch mode, jump to the end of the file | ||
;= goto:eof | ||
;= Add aliases below here | ||
e.=explorer . | ||
gl=git log --oneline --all --graph --decorate $* | ||
ls=ls --show-control-chars -F --color $* | ||
pwd=cd | ||
clear=cls | ||
history=cat %CMDER_ROOT%\config\.history | ||
unalias=alias /d $1 | ||
vi=vim $* | ||
cmderr=cd /d "%CMDER_ROOT%" |