# Other Commands

## <mark style="color:blue;">#cellread, #cellwrite, #cellerase, #cellcopy (cell operations)</mark>

Provide direct read or write access to specified cells of the test program.

### Commands Overview

<table data-full-width="true"><thead><tr><th width="127">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="e6a5180d2f774bcea3bd75614b8ff78d">#cellread/#cr</span></td><td>{sheet=[string]:}&#x3C;cell></td></tr><tr><td><span data-option="4cf8c7086b134ef4afa85e47badc75bc">#cellwrite/#cw</span></td><td>{sheet=[string]:}&#x3C;cell>&#x3C;value></td></tr><tr><td><span data-option="e6dc911ebc7543c3be747a3515c56f37">#cellerase/#ce</span></td><td>{sheet=[string]:}from=[string]:to=[string]</td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="162.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>sheet</td><td>[string]</td><td>Source/target sheet name. <br><strong>Default</strong>: TEST</td></tr><tr><td>cell, from, to</td><td>[string]</td><td>Source/target cell specification. Cell can be typed directly or like an expression using column names, labels and offsets. Resulting column must be always in range "A" to "AMJ" (1 to 1024 column) and row must be in range 1 to 65536.<br><strong>Review possible cell formats below</strong></td></tr><tr><td>value</td><td>[string]</td><td>Value which will be written into the target cell. If no value is passed, the target cell is cleared. If more than one value is passed, values are first merged together and the result will be written into the target cell.</td></tr></tbody></table>

<details>

<summary><strong>Review possible cell formats below</strong></summary>

Possible cell formats: \
&#x20;   **Direct**&#x20;

* \<column-letter(s)>\<row-number>
* "column-letter(s)" is from "A" (first column) to "AMJ" (last 1024th column)
* "row-number" is from 1 to 65536. Example: B5 - second column, fifth row \
  \
  **Direct column with offset**&#x20;
* ($\<column-letter(s)>+/-\<offset>)\<row-number>
* "column-letter(s)" and "row-number" are same like above
* "offset" is an integer number The dollar-sign ("$") must be present here and together with column letter(s) and offset must be surrounded by parentheses. Examples: ($A+2)4 = "C4" \
  ($E-1)6 = "D6" \
  ($B-2)1 => error, because first column is "A" and this expression points before the "A" column<br>

  Using column names and labels&#x20;

  * (\<column-name{+/-\<offset>})\<label-name>( {+/-\<offset>})
  * "column-name" is the name of column, column-names are defined by the first row in the sheet
  * "label-name" is the target label, specified by a column named "Label" in the test-program, label-name can be also a key-word "@this", which means the currently processed row by the funTEST. Label names can be used only on the TEST sheet.
  * "offset" is an optional parameter with the same functionality like above<br>

  Expression can be combined. It means, you can use column name and direct row, or direct column and label-name like a row, etc... Examples: (following examples expecting a "test" label on line 10, "mycol" on column "H" and current line 20) A(test+1) = direct column, using label "test" with offset +1 => A11 (mycol-1)2 = using column name with offset -1 and direct row => G2 (mycol)(test) = using column name and also label, no offsets => H10 (mycol)(@this+1) = using column name and current line with offset +1 => H21 X(@this) = using direct column and current line, no offsets => X20 X(@this) on the line below => X21, etc... ($K+1)(test) = using direct column with offset +1 and label => L10

</details>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#cellread</td><td>X1</td></tr></tbody></table>

Simple read a value from the cell "X1".
{% endtab %}

{% tab title="Example 2 " %}

<table data-full-width="true"><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#cellread</td><td>(mycol+2)(@this)</td></tr></tbody></table>

Read a value from the cell, specified by column-name "mycol" with offset +2 and currently processed row.
{% endtab %}

{% tab title="Example 3" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#cellwrite</td><td>X1;"myvalue"</td></tr></tbody></table>

Direct write a value "myvalue" to the cell "X1
{% endtab %}

{% tab title="Example 4" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#cellerase</td><td>sheet=example;from=A1;to=B5</td></tr></tbody></table>

Clears the cell-range from A1 to B5 on sheet "example".
{% endtab %}

{% tab title="Example 5" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#cellcopy</td><td>dstsheet=VALUES:srcfrom=W2:srcto=X10:dst=A1:convert=double</td></tr></tbody></table>

Copy the range from W2:X10 from the TEST sheet (no srcsheet argument) to VALUES destination sheet starting the cell A1. Automatic conversion to double will be performed.
{% endtab %}
{% endtabs %}

## <mark style="color:blue;">#retclear (Clear return values)</mark>

Clear a specified range of Return Value and Return Status column in the test-program spreadsheet. This should be usually done at the start of the test-program.

### Commands Overview

<table data-full-width="true"><thead><tr><th width="127">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="e6a5180d2f774bcea3bd75614b8ff78d">#cellread/#cr</span></td><td>{from=[string]}{;to=[string]}</td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="159.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>from</td><td>[string]</td><td>An expression to specify the starting line of range to be cleared. If omitted, the first row of the test program is used. <br>Possible options: <br>• line number greater than 1 <br>• expression using variable @this or label name and offset using + or - sign</td></tr><tr><td>to</td><td>[string]</td><td>An expression to specify ending line of range to be cleared. If omitted, the last row of test-program is used.</td></tr></tbody></table>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#retclear</td><td></td></tr></tbody></table>

Clear all return values in the whole test-program
{% endtab %}

{% tab title="Example 2 " %}

<table data-full-width="true"><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#retclear</td><td>from=@this</td></tr></tbody></table>

Clear return values in the current line (means line with #retclear command) to the end of the test-program
{% endtab %}

{% tab title="Example 3" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#retclear</td><td>from=10</td></tr></tbody></table>

Clear return values in the fixed line number 10 to the end of the test-program.
{% endtab %}

{% tab title="Example 4" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#retclear</td><td>from=labelA+5</td></tr></tbody></table>

Clear return values in 5 lines from line labeled "labelA" to the end of the test-program.
{% endtab %}

{% tab title="Example 5" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#retclear</td><td>from=labelA;to=labelB</td></tr></tbody></table>

Clear return values in line labeled "labelA" to the line labeled "labelB".
{% endtab %}
{% endtabs %}

## <mark style="color:blue;">#testfile (Test file control)</mark>

This command allows you to close, select new, save, or reload a test file directly from the test sequence&#x20;

### Commands Overview

<table data-full-width="true"><thead><tr><th width="143">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option><option value="756b5a84995c47fca37fce440a3e3fbb" label="#testfile" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="756b5a84995c47fca37fce440a3e3fbb">#testfile</span></td><td>&#x3C;parameter></td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="231.33333333333331">Parameter</th><th width="741">Desription</th></tr></thead><tbody><tr><td>close</td><td>Closes the currently running test program. At this point, the execution of test-file is broken and no following instruction is executed.</td></tr><tr><td>selectnew</td><td>Shows up the test-file dialog to select a new test-file. The previous project is used. If no new test file is selected, the "Return Status" = 1 is set, and the following instructions are executed normally. If a new test file is properly selected, the execution of the current test file is broken.</td></tr><tr><td>save</td><td>Immediately saves the currently running test-file to a hard-drive.</td></tr><tr><td>reload</td><td>Close and re-open the project, using current test-file. At this point the execution of test-file is breaked and no following instruction is executed.</td></tr><tr><td>load{:&#x3C;project>}:&#x3C;test-file>{:force=[bool]}</td><td>Close current, load and start new test-file by specified name of test-file and optionally project. At this point, the execution of test-file is broken and no following instruction is executed.<br>Force - project to be reloaded, even if it is the same as currently loaded. <strong>Default</strong> - no</td></tr></tbody></table>

## <mark style="color:blue;">#str (String operations)</mark>

Split string by separator(s) to spreadsheet columns/rows. Destination cells are always overwritten.

{% hint style="info" %}
This command is usually used if the return value of a previous step is a string with multiple values&#x20;

Example: `IR ,PASS ,0,999kV, >50Gohm,T=002,0s`

Command #str allows you to extract individual components separated by a separator (in this case ",")separator
{% endhint %}

### Command Overview

<table data-full-width="true"><thead><tr><th width="143">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option><option value="756b5a84995c47fca37fce440a3e3fbb" label="#testfile" color="blue"></option><option value="9ca5c5afbd1a40bea736733ad15beb11" label="#str" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="9ca5c5afbd1a40bea736733ad15beb11">#str</span></td><td>split/at}{:sheet=[string]}:cell=[string] {:sep0=[string]:..:sepN=[string]}{:rsep0=[string]:..:rsepN=[string]} {:convert=[enum]}</td></tr></tbody></table>

{% hint style="info" %}
The difference between split and at sub-commands are:

* split output and overwrites cells with the results from split string
* at outputs only one selected components to a return value cellParameter Description
  {% endhint %}

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="159.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>sheet</td><td>[string]</td><td>Target sheet to store splitted values. <br><strong>Default</strong>: TEST</td></tr><tr><td>cell</td><td>[string]</td><td>Target the top-left cell to store values. Absolute or relative format possible, same format like #cellread/#cellwrite/#cellerase functions.</td></tr><tr><td>sep, rsep</td><td>[string]</td><td>Column (sep) and row (rsep) seperator. One of them or both arguments can be used at the same time to split source string to columns or rows or both. There can be multiple (alternative) column or row separators.</td></tr><tr><td>limit, rlimit</td><td>[int]</td><td>Column and row limits. These arguments will limit a max number of columns and/or rows. <strong>Default</strong>: no limit</td></tr><tr><td>convert</td><td>[enum]</td><td>Automatic conversion of all values. If the conversion is not possible, the source value is passed to the cell. <br>• int - convert to integer numbers <br>• double - convert to double numbers <br><strong>Default</strong>: (no conversion)</td></tr></tbody></table>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#str</td><td>split:sheet=VALUES:cell=A1:sep=";":convert=int</td></tr></tbody></table>

Split Return Value of previous valid step to "VALUES" sheet, starting by A1 cell. Automatic conversion of values to integer will be done.
{% endtab %}

{% tab title="Example 2 " %}

<table data-full-width="true"><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#str</td><td>at:src="text;to;parse\nnew;row":sep=";":rsep="\n":row=0:cell=0</td></tr></tbody></table>

Returns the value "text".
{% endtab %}
{% endtabs %}

## <mark style="color:blue;">#catch (Wait for a specified response of device)</mark>

Repetitively send the command to specified device and block executing the program until return value match to expected value. \
When #oninput event occurs, the #catch will break.\
If any command execution to the device fails, the #catch loop breaks and error message of failed command is passed to Return Value and Return Status set to 1.

### Commands Overview

<table data-full-width="true"><thead><tr><th width="142">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option><option value="372db42a4fae4483b2f7b74b65070689" label="#catch" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="372db42a4fae4483b2f7b74b65070689">#catch</span></td><td>dev=[string]:cmd=[string]:accept=[string]{:accept2=[string]:...:acceptN=[string]} {;timeout=[number]}{;interval=[number]}{;inv=[bool]}</td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="159.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>dev</td><td>[string]</td><td>Target device alias.</td></tr><tr><td>cmd</td><td>[string]</td><td>Command to send to target device.</td></tr><tr><td>accept</td><td>[string]</td><td>Return value(s) of command to be accepted. The #catch command blocks executing the program until any of these strings match the return value. <br>The accept argument supports wild cards (? for any one character and * for any number of characters).</td></tr><tr><td>timeout</td><td>[number]</td><td>Time limit in [ms] to wait to pass all accept strings. If the timeout is reached, the #catch command return status will be one and current state of inputs will be returned. Default: (no timeout)</td></tr><tr><td>interval</td><td>[number]</td><td>Interval in [ms] between executing of IO commands. <br><strong>Default</strong>: 100 [ms]</td></tr><tr><td>inv</td><td>[bool]</td><td>Inverts condition defined by parameter accept.</td></tr></tbody></table>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#catch</td><td>dev="tester":cmd="finish?";accept="1"</td></tr></tbody></table>

Send the "finish?" command to the device with alias "tester" until the command returns "1". There is no timeout.
{% endtab %}

{% tab title="Example 2 " %}

<table data-full-width="true"><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#catch</td><td>dev="tester":cmd="finish?";accept="1":timeout=5000</td></tr></tbody></table>

Almost the same like previous, but with defined timeout of 5 seconds. If the command will not return "1" within 5 seconds the #catch command is terminated with error - Return Status will be set to 1.
{% endtab %}

{% tab title="Example 3" %}

<table><thead><tr><th width="126">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#catch</td><td>dev="com":cmd="read?";accept="<em>PASS</em>"</td></tr></tbody></table>

Wild-card example, the "read?" command is send to "com" device as long until the return value will contain "PASS" sub-string.
{% endtab %}
{% endtabs %}

## <mark style="color:blue;">#extprocess (Run an external process)</mark>

Start a new external process.

This command is used when you need to run external software. This allows you to run 3rd party software without the need of developing dedicated plugin.

### Commands Overview

<table data-full-width="true"><thead><tr><th width="142">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option><option value="372db42a4fae4483b2f7b74b65070689" label="#catch" color="blue"></option><option value="5cd1c2f3a53a42449dc10e835231777d" label="#get" color="blue"></option><option value="2644f828ffd54d5082d46c2e59a36db8" label="#extprocess" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="2644f828ffd54d5082d46c2e59a36db8">#extprocess</span></td><td>start:&#x3C;filename>{;args=[string]}{;waitforexit=[bool]} {;timeout=[number]}{;nowindow=[bool]} {;redirstdout=[bool]}{;redirstderr=[bool]}</td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="159.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>filename</td><td>[string]</td><td>Path to an executable file to execute</td></tr><tr><td>args</td><td>[string]</td><td>Optional command-line arguments</td></tr><tr><td>waitforexit</td><td>[bool]</td><td>If true, block executing the program until the process exits. <br><strong>Default</strong>: false</td></tr><tr><td>nowindow</td><td>[bool]</td><td>Hide the window of executing application. <br><strong>Default:</strong> true</td></tr><tr><td>redirstdout</td><td>[bool]</td><td>Redirect process standard output ("stdout") stream. If true, the output is received to internal string buffer. This buffer can be accessed by "stdout" command. <br><strong>Default</strong>: false</td></tr><tr><td>redirstderr</td><td>[bool]</td><td>Redirect process standard error ("stderr") stream. If true, the error output is received to the internal string buffer (use the command "stderr" to access). <br><strong>Default</strong>: false</td></tr></tbody></table>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>start:"c:\test.bat"</td></tr></tbody></table>

The most simple use, just start the "test.bat" batch file. No arguments. No output(s) redirecting. No waiting for process exit.
{% endtab %}

{% tab title="Example 2 " %}

<table data-full-width="true"><thead><tr><th width="188">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>start:"c:\test.exe";args="-file abc.txt"; waitforexit=true;timeout=3000</td></tr></tbody></table>

Start the "test.exe" process and pass "-file abc.txt" command-line arguments. Command will block the program execution for a maximum of 3 seconds. If the started process will not finish its work in 3 seconds, the Return Status becomes log.1 (error).
{% endtab %}

{% tab title="Example 3" %}

<table><thead><tr><th width="198">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>quit</td></tr></tbody></table>

Quit the running process immediately
{% endtab %}

{% tab title="Example 4" %}

<table><thead><tr><th width="198">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>running?</td></tr></tbody></table>

Check if the started process is running.

<table><thead><tr><th width="198">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>retcode</td></tr></tbody></table>

Get return code of last exited process.
{% endtab %}

{% tab title="Example 5" %}

<table><thead><tr><th width="198">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#extprocess</td><td>stdout/stderr:read</td></tr></tbody></table>

Access the internal standard output (stdout) or error output (stderr) buffer. To use "stdout" command, the "redirstdout" parameter of start command must be set to true. To use "stderr" command, the "redirstderr" must be set to true.
{% endtab %}
{% endtabs %}

## <mark style="color:blue;">#get (Get a value)</mark>

Using this function, it is possible to access system properties.

### Commands Overview

<table data-full-width="true"><thead><tr><th width="142">Command<select><option value="69d37e59dbc44aaca6dc72161f84784b" label="#msg" color="blue"></option><option value="b928d283a7784fae8c94f7bc27467b23" label="#dlg" color="blue"></option><option value="dd3ea796575b44beb6fe421f4c920096" label="#goto" color="blue"></option><option value="2f5a685324fb43dcb163abd13cb8b03b" label="#print" color="blue"></option><option value="e6dc911ebc7543c3be747a3515c56f37" label="#cellerase/#ce" color="blue"></option><option value="e6a5180d2f774bcea3bd75614b8ff78d" label="#cellread/#cr" color="blue"></option><option value="4cf8c7086b134ef4afa85e47badc75bc" label="#cellwrite/#cw" color="blue"></option><option value="372db42a4fae4483b2f7b74b65070689" label="#catch" color="blue"></option><option value="5cd1c2f3a53a42449dc10e835231777d" label="#get" color="blue"></option><option value="2644f828ffd54d5082d46c2e59a36db8" label="#extprocess" color="blue"></option></select></th><th>Parameter</th></tr></thead><tbody><tr><td><span data-option="5cd1c2f3a53a42449dc10e835231777d">#get</span></td><td>&#x3C;source>:&#x3C;property></td></tr></tbody></table>

#### Parameter Description

<table data-full-width="true"><thead><tr><th width="151.33333333333331">Parameter</th><th width="130">Type</th><th>Options</th></tr></thead><tbody><tr><td>source</td><td>[enum]</td><td>Specify property source. <br>Valid values: system, project, teststation, testfile, funtest</td></tr><tr><td>property</td><td>[enum]</td><td>Name of the property. It depends on property source.</td></tr></tbody></table>

#### Available system properties

<table data-full-width="true"><thead><tr><th width="151.33333333333331">Source</th><th width="154">Property</th><th>Desription</th></tr></thead><tbody><tr><td>system</td><td>tickcount</td><td>Get a number of milliseconds since operating system start. Note: "tickcount" is stored as a 32-bit signed integer. It will increment to a maximum positive integer value for approximately 24,9 days, then j ump to to a minimum negative number and increment back to zero during next 24,9 days.</td></tr><tr><td></td><td>loggeduser</td><td>Login of currently logged user in the OS.</td></tr><tr><td></td><td>machinename</td><td>Name of the computer.</td></tr><tr><td></td><td>winverfull</td><td>Full version of the OS, including name, service pack, etc.</td></tr><tr><td></td><td>winver</td><td>Short version of the OS, format a.b.c.d</td></tr><tr><td>funtest</td><td>netver</td><td>Full name of .NET framework version, used at the compile time.</td></tr><tr><td></td><td>ver</td><td>Version of funTEST executable</td></tr><tr><td></td><td>exepath</td><td>Full path to the funTEST's executable.</td></tr><tr><td>project</td><td>name</td><td>Name of currently loaded project</td></tr><tr><td></td><td>dir</td><td>Directory of currently loaded project file</td></tr><tr><td></td><td>path</td><td>Full path to currently loaded project file</td></tr><tr><td>teststation</td><td>name</td><td>Name of currently used teststation</td></tr><tr><td></td><td>dir</td><td>Directory of currently used teststation file</td></tr><tr><td></td><td>path</td><td>Full path of currently used teststation file</td></tr><tr><td>testfile</td><td>name</td><td>Name of currently loaded test-file</td></tr><tr><td></td><td>dir</td><td>Directory of currently loaded test-file</td></tr><tr><td></td><td>path</td><td>Full path of currently loaded test-file Note: when read-only test-files are used, the funTEST returns source path and directory of loaded test-file, not the local working copy</td></tr></tbody></table>

### Examples

{% tabs %}
{% tab title="Example 1 " %}

<table data-full-width="true"><thead><tr><th width="147">Command</th><th>Parameter</th></tr></thead><tbody><tr><td>#get</td><td>system:tickcount</td></tr></tbody></table>

Get a number of milliseconds since OS start, returns for example 45674961, which means the OS is running for about 12 hours, 41 minutes and 15 seconds.
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://funtest-1.gitbook.io/funtest-documentation/creating-test-sequence/funtest-commands/other-commands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
