| 
| 
| 
| #74821 - 2003-05-02 06:20 PM  KixStart v1.1 - Startup Script for KiXtart |  
| Allen   KiX Supporter
 
       
 Registered:  2003-04-19
 Posts: 4562
 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
 
 
 
 
 |  
| Top |  |  |  |  
| 
| 
| #74823 - 2003-05-02 11:23 PM  Re: KixStart v1.1 - Startup Script for KiXtart |  
| Allen   KiX Supporter
 
       
 Registered:  2003-04-19
 Posts: 4562
 Loc:  USA
 | 
Thank you for the    ![[Eek!]](images/icons/shocked.gif) positive ![[Eek!]](images/icons/shocked.gif) feedback. 
 ![[Big Grin]](images/icons/grin.gif)  
 This board is like a new home to me... I've finally found a place where others understand the value of a good script...
 ![[Cool]](images/icons/cool.gif)  |  
| Top |  |  |  |  
| 
| 
| #74825 - 2004-12-30 10:49 PM  Re: KixStart v1.2 - Startup Script for KiXtart |  
| Allen   KiX Supporter
 
       
 Registered:  2003-04-19
 Posts: 4562
 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
 
 
 |  
| Top |  |  |  |  
| 
| 
| #74826 - 2004-12-31 08:28 PM  Re: KixStart v1.2 - Startup Script for KiXtart |  
| Allen   KiX Supporter
 
       
 Registered:  2003-04-19
 Posts: 4562
 Loc:  USA
 | 
After posting this latest version, I got to thinking and realized the new option to load UDFs is not limited to just one function.  In fact it is possible to use just about any command in kixtart from the command line now.
 For example:
 
 I created a simple UDFLibrary with just one UDF in it:
 test.kix
 Code:
 
  
function echo($output)
 $echo=$output
 endfunction
 
 
 
 Then using the syntax of kixstart.bat:
 Code:
 
 
kixstart test -f:echo('Hello World')
 
 
 would display:  Hello World
 
 But, there is nothing stopping me from typing in this too.
 Code:
 
 
kixstart test -f:$=echo('Hello World') ? $ ? join(split($,'Hello'),'Goodbye')
 
 
 would display:  Hello World, Goodbye World
 
 
 Obviously this is exceptionally prone to typos, so use with care.  HTH.
 |  
| Top |  |  |  |  
 Moderator:  Glenn Barnas, NTDOC, Arend_, Jochen, Radimus, Allen, ShaneEP, Ruud van Velsen, Mart
 
 | 
| 
 
| 0 registered
and 739 anonymous users online. 
 | 
 |  |