cmder/vendor/lib/flag_exists.cmd

113 lines
2.6 KiB
Batchfile
Raw Normal View History

2018-05-18 20:32:05 +08:00
@echo off
set "flag_exists=%~dp0flag_exists"
2018-05-18 20:32:05 +08:00
setlocal
if "%~1" equ "" goto :wrongSyntax
if not defined CMDER_USER_FLAGS (
2018-05-18 21:02:36 +08:00
set "CMDER_USER_FLAGS= "
2018-05-18 20:32:05 +08:00
)
set "feNOT=false"
2018-05-18 20:32:05 +08:00
goto :parseArgument
:doShift
shift
:parseArgument
set "currenTarg=%~1"
if /i "%currenTarg%" == "/?" (
goto :help
) else if /i "%currenTarg%" equ "/help" (
goto :help
) else if /i "%currenTarg%" equ "/h" (
goto :help
) else if /i "%currenTarg%" equ "NOT" (
set "feNOT=true"
2018-05-18 20:32:05 +08:00
goto :doShift
) else (
if "%~1" equ "" goto :wrongSyntax
if "%~2" equ "" goto :wrongSyntax
set "feArgName=%~1"
set "feCommand=%~2"
2018-05-18 20:32:05 +08:00
goto :detect
)
:detect
:: to avoid erroneous deteciton like "/do" "/doNOT", both have a "/do"
:: but if it works like "/do " "/doNOT ", "/do " won't match "/doN"
set "CMDER_USER_FLAGS=%CMDER_USER_FLAGS% "
set "feArgName=%feArgName% "
2018-05-18 20:32:05 +08:00
:: echo.
:: echo %CMDER_USER_FLAGS%
:: echo %feNOT%
:: echo %feArgName%
:: echo %feCommand%
2018-05-18 20:32:05 +08:00
:: echo.
echo %CMDER_USER_FLAGS% | find /i "%feArgName%">nul
2018-05-18 20:32:05 +08:00
if "%ERRORLEVEL%" == "0" (
if "%feNOT%" == "false" (
call "%feCommand%"
2018-05-18 20:32:05 +08:00
)
) else (
if "%feNOT%" == "true" (
call "%feCommand%"
2018-05-18 20:32:05 +08:00
)
)
exit /b
:wrongSyntax
echo The syntax of the command is incorrect.
echo.
echo use /? for help
echo.
exit /b
:help
echo.
echo %%flag_exists%%
echo.
echo Handles with custom arguments for cmder's init.bat.
echo written by xiazeyu, inspired DRSDavidSoft.
2018-05-18 20:32:05 +08:00
echo.
echo Usage:
echo.
echo %%flag_exists%% [NOT] argName command
2018-05-18 20:32:05 +08:00
echo.
echo NOT Specifies that %%flag_exists%% should carry out
2018-05-18 20:32:05 +08:00
echo the command only if the condition is false.
echo.
echo argName Specifies which argument name is to detect.
echo.
echo command Specifies the command to carry out if the
echo argument name is detected. It's recommand to
echo use a pair of double quotation marks to
2018-05-18 20:32:05 +08:00
echo wrap your command to avoid exceed expectation.
echo.
echo Examples:
echo.
echo these examples are expected to be writted in /config/user-profile.cmd
echo it will use the environment varible "CMDER_USER_FLAGS"
echo.
echo Case 1:
echo.
echo The following command in user-profile.cmd would execute "notepad.exe"
echo.
echo call %%flag_exists%% "/startNotepad" "cmd /c start notepad.exe"
2018-05-18 20:32:05 +08:00
echo.
echo if you pass parameter to init.bat like:
echo.
echo init.bat /startNotepad
echo.
echo Case 2:
echo.
echo The following command in user-profile.cmd would execute "notepad.exe"
echo.
echo call %%flag_exists%% NOT "/dontStartNotepad" "cmd /c start notepad.exe"
2018-05-18 20:32:05 +08:00
echo.
echo UNLESS you pass parameter to init.bat like:
echo.
echo init.bat /dontStartNotepad
echo.
exit /b