#74821 - 2003-05-02 06:20 PM
KixStart v1.1 - Startup Script for KiXtart
|
Allen
KiX Supporter
   
Registered: 2003-04-19
Posts: 4572
Loc: USA
|
Original Topic: Passing Arguments from the Command line
This updated version also allows a batch file to run kixtart commands with out having to actually be running a kixtart script.
Examples:
kixstart @ for $counter = 1 to 10 ? $counter sleep 1 next
kixstart @ ? @scriptdir
To use:
1. Copy the code below to Notepad and save the file as Kixstart.bat in the same directory as Kix32.exe
or
1. Rename Kix32.exe to something like Kix32_420.exe.
2. Copy the code below to Notepad
3. Modify the section named ":runkix" to:
kix32_420.exe %kixscript% %cmdline%
4. Save the file as Kix32.bat in the same directory as Kix32_420.exe.
5. Run kix32 for your scripts (but with more options)
Code:
::====================================================
::STARTUP_SCRIPT KIXSTART.BAT
::
::ACTION ALLOWS USER TO PASS EITHER KIXTART ARGUMENTS
:: OR CMD LINE ARGUMENTS TO KIXTART SCRIPT
:: OR RUN A KIXTART COMMAND FROM A COMMAND PROMPT
::
::AUTHOR ALLEN POWELL (AL_PO)
::
::VERSION 1.1
::
::REQUIRES CMD.EXE FROM WINDOWS NT 4.0, WINDOWS 2000, OR WINDOWS XP
::
::SYNTAX KIXSTART SCRIPTNAME SCRIPTARGS
::OR
:: KIXSTART @ KIXTARTCOMMAND
::
::PARAMETERS
:: SCRIPTNAME - .KIX FILE
:: SCRIPTARGS - EITHER $ARG1="SOMETHING" $ARG2="NOTHING"
:: OR /A /B /C /SOMETHING /D "NOTHING"
:: OR no args at all.
::
:: KIXTARTCOMMAND - NORMAL SYNTAX OF KIXTART COMMANDS
::
::
::ADDITIONAL IF USING CMD LINE ARGS, KIXSTART.BAT SETS $CMDARGS WHICH CAN
:: BE SPLIT AND THEN PROCESSED IN THE KIXTART CODE.
::
@echo off
if not %OS%==Windows_NT goto help
if "%1"=="/?" goto help
if "%1"=="" goto help
set kixscript=%1
for /f "tokens=1* delims= " %%f in ("%*") do call :DetermineArgType "%%g"
goto end
:DetermineArgType
if %1=="" set cmdline= & goto runkix
set args=%1
set args=%args:~1,-1%
if %kixscript%==@ echo %args%>%temp%\tmp.kix & set kixscript=%temp%\tmp.kix & set cmdline= & goto runkix
if %args:~0,1%==$ set cmdline=%args% & goto runkix
if %args:~0,1%==/ set cmdline=$cmdargs="%args%" & goto runkix
goto :eof
:runkix
kix32 %kixscript% %cmdline%
goto end
:help
cls
echo
echo.
echo KIXSTART.BAT is a startup script for KIX32.EXE.
echo.
echo KIXSTART.BAT can use EITHER kixtart arguments ($arg1="blah blah blah")
echo OR Command arguments preceded with a "/" (/a "hello" /b /c /etc)
echo OR no arguments at all.
echo.
echo To use Command arguments in Kixtart add the following to the beginning
echo of your Kixtart code:
echo.
echo if $cmdargs^<^>""
echo $params=split($cmdargs,"/")
echo for each $param in $params
echo {your code here}
echo next
echo endif
echo.
echo KIXSTART.BAT requires an NT based OS: Windows NT 4, Windows 2000, Windows XP,
echo or higher.
echo.
echo Syntax: Kixstart Scriptname ScriptArgs
echo.
:end
_________________________
(... better days ahead)
|
|
Top
|
|
|
|
#74823 - 2003-05-02 11:23 PM
Re: KixStart v1.1 - Startup Script for KiXtart
|
Allen
KiX Supporter
   
Registered: 2003-04-19
Posts: 4572
Loc: USA
|
|
|
Top
|
|
|
|
#74825 - 2004-12-30 10:49 PM
Re: KixStart v1.2 - Startup Script for KiXtart
|
Allen
KiX Supporter
   
Registered: 2003-04-19
Posts: 4572
Loc: USA
|
Okay here is the lastest version, which adds the ability to load a UDFLibary from the command line and use any single UDF within it. This was inspired from this thread: Pass-Through for Function calls
Example: kixstart udf.kix -f:myfunction('data')
The one problem I had adding this functionality is with text as a parameter of the fuction. Because of the way the batch files handle quotes(") it is necessary to enclose your text data with single quotes(').
Code:
::==================================================== ::STARTUP_SCRIPT KIXSTART.BAT :: ::ACTION ALLOWS USER TO PASS EITHER KIXTART ARGUMENTS :: OR CMD LINE ARGUMENTS TO KIXTART SCRIPT :: OR RUN A KIXTART COMMAND FROM A COMMAND PROMPT :: OR USE A UDF LIBRARY FROM THE COMMAND PROMPT :: ::AUTHOR ALLEN POWELL (AL_PO) :: ::VERSION 1.2 :: ::REQUIRES CMD.EXE FROM WINDOWS NT 4.0, WINDOWS 2000, OR WINDOWS XP :: ::SYNTAX KIXSTART SCRIPTNAME SCRIPTARGS ::OR :: KIXSTART @ KIXTARTCOMMAND ::OR :: KIXSTART UDFLIBRARY -f:function(parameters) :: ::PARAMETERS :: SCRIPTNAME - .KIX FILE :: SCRIPTARGS - EITHER $ARG1="SOMETHING" $ARG2="NOTHING" :: OR /A /B /C /SOMETHING /D "NOTHING" :: OR no args at all. :: :: KIXTARTCOMMAND - NORMAL SYNTAX OF KIXTART COMMANDS :: UDFLIBRARY - .KIX FILE CONTAINING ONE OR MORE UDFs :: :: ::ADDITIONAL IF USING CMD LINE ARGS, KIXSTART.BAT SETS $CMDARGS WHICH CAN :: BE SPLIT AND THEN PROCESSED IN THE KIXTART CODE. :: :: Examples :: :: kixstart myscript.kix /a :: starts kix32 with myscript.kix setting $cmdargs=/a :: :: kixstart myscript.kix -f:test('hello') :: starts kix32 calling myscript.kix to load udf(s) and then runs the udf test passing 'hello' to it :: NOTE: If the UDF parameter value is text, it must be enclosed with single quotes :: :: kixstart @ for $i=1 to 10 ? $i sleep 1 next :: starts kix32 with a temporary script displaying 1,2,3..10 ::
@echo off if not %OS%==Windows_NT goto help if "%1"=="/?" goto help if "%1"=="" goto help set kixscript=%1 for /f "tokens=1* delims= " %%f in ("%*") do call :DetermineArgType "%%g" goto end
:DetermineArgType if %1=="" set cmdline= & goto runkix set args=%1 set args=%args:~1,-1% if %kixscript%==@ echo %args%>%temp%\tmp.kix & set kixscript=%temp%\tmp.kix & set cmdline= & goto runkix if %args:~0,3%==-f: echo call "%kixscript%">%temp%\tmp.kix & echo %args:~3%>>%temp%\tmp.kix & set kixscript=%temp%\tmp.kix & set cmdline= & goto runkix if %args:~0,1%==$ set cmdline=%args% & goto runkix if %args:~0,1%==/ set cmdline=$cmdargs="%args%" & goto runkix
goto :eof
:runkix kix32 %kixscript% %cmdline% goto end
:help cls echo echo. echo KIXSTART.BAT is a startup script for KIX32.EXE. echo. echo KIXSTART.BAT can use EITHER kixtart arguments ($arg1="blah blah blah") echo OR Command arguments preceded with a "/" (/a "hello" /b /c /etc) echo OR no arguments at all. echo. echo To use Command arguments in Kixtart add the following to the beginning echo of your Kixtart code: echo. echo if $cmdargs^<^>"" echo $params=split($cmdargs,"/") echo for each $param in $params echo {your code here} echo next echo endif echo. echo KIXSTART.BAT requires an NT based OS: Windows NT 4, Windows 2000, Windows XP, echo or higher. echo. echo Syntax: Kixstart Scriptname ScriptArgs echo. :end
_________________________
(... better days ahead)
|
|
Top
|
|
|
|
Moderator: Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
|
0 registered
and 685 anonymous users online.
|
|
|