====== Command Lines ======

There are a number of places in [[:util:SCFG]] where a sysop may configure command-lines to be executed for certain features (e.g. doors, file transfer drivers, file archive/compression/test, etc.).

===== Modules =====
If the command-line is to be used to execute an internally evaluated module (either [[:util:Baja]] or [[custom:JavaScript]]), the command line should begin with an asterisk (''*'') or question mark (''?'') character. An asterisk indicates that a ''.js'' file should be executed from either the ''[[dir:mods]]'' or ''[[dir:exec]]'' directory if it exists, otherwise, to execute a ''.bin'' (Baja compiled) file (from either the ''[[dir:mods]]'' or ''[[dir:exec]]'' directory) if it exists. A question mark indicates to execute a ''.js'' file only (do not fall back to ''.bin''). The module file extension (e.g. ''.js'' or ''.bin'') is optional.

In summary:

^ Command-line ^ Description                                          ^
| *example     | Executes ''exec/example.js'' or ''exec/example.bin'' |
| ?example     | Executes ''exec/example.js'' only                    |

Note: The ''[[dir:mods]]'' directory or configured ''Start-up Directory'' (when relevant) are also searched for modules to execute.
===== Specifiers =====

Command lines configured in [[:util:SCFG]] may include //Command Line Specifiers// which are special sequences (macros) which will be replaced with useful dynamic values at the time the command line is executed by the BBS.

//Command Line Specifiers// may also be used in many string-related Baja functions and with the JavaScript ''bbs.cmdstr()'' method.

The currently supported //Command Line Specifiers// are:

^Specifer ^Description                ^Windows Example ^ Unix Example^
|''%A''	|Current user alias           |  ''digital man''        ||
|''%a''	|Current user alias (auto-quoted)  |  ''%%"digital man"%%''  ||
|''%b''	|Current baud (DTE) rate      |  ''38400 ''  ||
|''%c''	|Current connect description  |  ''Telnet''  ||
|''%d''	|Current connect (DCE) rate   |  ''30000 ''  ||
|''%e''	|Estimated CPS rate*10        |  ''30000 ''  ||
|''%F''	|File path/name             |''C:\SBBS\NODE1\DOOR.SYS''|''/sbbs/node1/door.sys''|
|''%f''	|File path/name (auto-quoted) |''%%"C:\Program Files\SomeFile"%%''|''%%"/some path/file/"%%''|
|''%g''	|Temporary file directory   |''C:\SBBS\NODE1\TEMP\''|''/sbbs/node1/temp/''|
|''%h''	|Socket descriptor (inheritable)  |  ''1402 ''      ||
|''%i''	|Current client IP address        |  ''127.0.0.1''  ||
|''%j''	|[[dir:DATA]] directory           |''C:\SBBS\DATA\''|''/sbbs/data/''|
|''%k''	|[[dir:CTRL]] directory           |''C:\SBBS\CTRL\''|''/sbbs/ctrl/''|
|''%l''	|Current maximum lines per message                   |  ''500''  ||
|''%m''	|Minutes in the current user's minute bank           |  ''0''  ||
|''%n''	|Current [[dir:node]] directory   |''C:\SBBS\NODE1\''|''/sbbs/node1/''|
|''%O''	|Sysop's name                     |  ''digital man''  ||
|''%o''	|Sysop's name (auto-quoted)      |  ''%%"digital man"%%''  ||
|''%p''	|Client protocol (e.g. Telnet, RLogin, SSH), or "raw" |                                ''raw''  ||
|''%q''	|System's QWK ID (as specified in SCFG)           |  ''VERT''  ||
|''%r''	|Client's terminal height (in rows)               |  ''24''  ||
|''%s''	|File specification or current command string     |''C:\FILES\*.ZIP''|''/files/*.zip''|
|''%t''	|Time (in seconds) user has left online           |  ''60''  ||
|''%u''	|UART I/O address in hex or F=FOSSIL              |  ''F''  ||
|''%v''	|Synchronet version                               |  ''3.15a''  ||
|''%w''	|Client's terminal width (in columns)             |  ''80''  ||
|''%x''	|Current user's command shell (internal code)     |  ''DEFAULT''  ||
|''%y''	|COMSPEC or SHELL environment variable   |''C:\Windows\system32\cmd.exe''|''/bin/sh''|
|''%z''	|[[dir:TEXT]] directory                  |''C:\SBBS\TEXT\''|''/sbbs/text/''|
|''%.'' |Executable file suffix/extension                 |''.exe''  | |
|''%~'' |File path/name in Micros~1 short format (Win32) |''C:\SOMEFI~1''|''/somefilename.txt''|
|''%!''	|[[dir:EXEC]] directory                           |''C:\SBBS\EXEC\''|''/sbbs/exec''|
|''%@'' |[[dir:EXEC]] directory only on Windows           |''C:\SBBS\EXEC\''|              |  
|''%#''	|Current Node number (1-255)                      |  ''1''  ||
|''%*''	|Current Node number (0 padded to 3 digits)       |  ''001''  ||
|''%$''	|User's credits                                   |  ''4534834''  ||
|''%+'' |User's real name (auto-quoted)                   |  ''"Rob Swindell"''  ||
|''%-'' |User's chat handle/call-sign (auto-quoted)       |  ''WX6YYZ''  ||
|''%%''	|Percent symbol                                   |  ''%''    ||
|''%?''	|Platform/operating system (build target)         |  ''win32''|''linux''|
|''%^'' |Processor architecture (build target)            |  ''i686''|''x64''|
|''%1''	|Current user number                              |  ''1''    ||
|''%2''	|Current user number (0 padded to 2 digits)       |  ''01''   ||
|''%3''	|Current user number (0 padded to 3 digits)       |  ''001''  ||
|''%4''	|Current user number (0 padded to 4 digits)       |  ''0001''   ||
|''%(5-9)'' |Current user number (0 padded to 5-9 digits) |  ''00001''  ||

==== Auto-quoting ====

For most alphabetic specifiers, using uppercase or lowercase letters will produce the same results. The following specifiers support automatic quoting, enclosing the value in double-quote characters only when spaces are included in the expanded value. To prevent automatic quoting, use the uppercase version of the specifier (e.g. ''%A'' instead of ''%a'').

  * ''%a''
  * ''%f'' 
  * ''%o''

The ''%~'' specifier is always auto-quoted on non-Windows platforms (and never requires quoting on Windows platforms).
 
===== See Also =====
  * [[:util:SCFG]]


{{tag>configuration general_config scfg module door}}