Skip to main content
Version: 23.4

Local and Global Properties for Files and File Systems

The local and global properties described here affect the way SenseTalk scripts access or interact with files and file system objects. For additional information about working with files and the file system in SenseTalk, see File and Folder References and File and Folder Interaction.

Setting or Changing Local and Global Property Values:

You can set a global property value with the SenseTalk commands Set or Put. Note that when you reference one of these properties, you must use the word the before the property name to distinguish it from an ordinary variable.

Examples:

set the searchrectangle to [1,2,2,3]
put 2 into the remoteworkinterval

You can add or change specific named properties within a global property like this:

set the namedColors.pink to color("RGB,1.0,0.5,0.5") -- Adds pink to the namedColors global property and defines its RGB color value
set the listFormat's separator to " & " -- Sets the separator property of the listFormat global property

Properties can also be set or updated by using the setoption or setoptions commands. The setoption command lets you update a single property, and setoptions lets you update multiple properties.

Examples:

setoption searchrectangle, [1,2,2,3]
setoptions {searchrectangle: [1,2,2,3], scriptlogging: yes}
note

Because setoption and setoptions are specific for use with global and local properties, you omit the word the from the property name in the command syntax for these commands.

For additional information about working with local and global properties, see Local and Global Properties in SenseTalk.

the folder, the directory Global Properties

Values: The path for the current working directory

Default: Typically, the path to the Documents folder; however, this value can be changed by updating the Default Suite Directory setting in the General section of Preferences.

Behavior: This property lets you access or change the current working folder. The value returned by the folder ends with a slash unless the folderNamesEndWithSlash global property is set to false. The slash at the end makes it easy to create a full path name by appending a file name, as shown in the example below.

note

The words folder and directory are used interchangeably within SenseTalk scripts. Wherever the word folder is used in a script, you can use the word directory instead.

Example:

set the directory to "C:\Users\Carrie\Desktop\"

Example:

set the folder to "C:\Users\Carrie\Desktop\"

Example:

set the directory to "C:\Users\Carrie\Desktop\data\"
put the files of the folder into fileObjects // Returns a list of the file objects for any files in the current working directory and stores them in a variable

Example:

set the folder to "/tmp/myWorkArea" -- Sets the working folder
put the folder & "newfile.txt" into filePath
put "xyz" into file filePath

Related:

the folderNamesEndWithSlash Global Property

Values: True, False

Default: True

Behavior: This property determines whether folder or directory names are returned with a slash at the end. This property applies to the folder and the directory global properties as well as the various SenseTalk commands and functions that return directory paths.

Example:

set the folderNamesEndWithSlash to false

Example:

log the folder // Logs the current working directory with a slash at the end. For example: 'C:/Users/Carrie/Documents/'
set the folderNamesEndWithSlash to false
log the folder // Logs the current working directory without a slash at the end. For example: 'C:/Users/Carrie/Documents'

Example:

set the folderNamesEndWithSlash to false
put the folder & "\newfile.txt" into filepath // Concatenates the / to create a valid path, because the / is not returned by the folder function
put "xyz" into file filepath

Related:

the strictFiles Global Property

Values: True, False

Default: False

Behavior: This property can be used to provide stricter control over the use of files at runtime. When this property is set to True, reading a nonexistent file as a container throws an exception rather than returning empty.

When set to False, reading from a nonexistent file returns a value as though that file were empty. Sometimes this behavior can lead to unexpected results. For example, if a file name is entered incorrectly, a script treats it as empty rather than giving an error indicating that the file could not be found.

Example:

set the strictFiles to true

Example:

set the StrictFiles to true
put file "C/Desktopmyfile.txt" into myData // Throws exception: StrictFilesViolation Attempt to read nonexistent file: C:/Users/Carrie/Documents/C/Desktopmyfile.txt'

Related:

  • the strictProperties
  • the strictVariables

the defaultStringEncoding Global Property

Values: The current string encoding method. To see the full list of available values, use the availableStringEncodings() function:

put availableStringEncodings()

Default: UTF8

Behavior: This property specifies how text strings are encoded when they are read from or written to a file, socket, or URL. This setting is used by the read and write commands, and also when treating either a file or a URL as a container. Acceptable values for the defaultStringEncoding include: UTF8, Unicode, ASCII, and many others.

Example:

set the defaultStringEncoding to "ASCII"

Example:

put BlackDiamond as data // Displays '<e29786>'
set the defaultStringEncoding to "Unicode"
put BlackDiamond as data // Displays '<fffec625>'

Example:

put "C:\Users\Carrie\Desktop\Data\characters.txt" into filePath // The file at this path contains unicode characters
set the DefaultStringEncoding to "Unicode"
put file filePath // Displays unicode characters from the file. For example: ʘʤϬϮ

Example:

put the defaultStringEncoding into origEncoding
set the defaultStringEncoding to "Unicode" -- Full 16-bit Unicode text
put myInternationalText into file "/tmp/twoByteText"
set the defaultStringEncoding to origEncoding -- Restores original value

Tech Talk

Within SenseTalk, text characters are simply what they are: the letter A is the letter A, and the letter é is the letter é (an e with an acute accent). Externally, though, there are a number of different ways that the same characters might be represented as sequences of bits and bytes. Each different text representation is called an encoding. The standard encoding used by SenseTalk is UTF8, which is a widely used 8-bit system for encoding Unicode characters.

the umask Global Property

Values: A 3-digit number; see the Behavior section for detailed description

Default: 022

Behavior: Sets or retrieves the posix permissions mask for newly created files. Use the umask property to control the access permissions for any file or folder created by SenseTalk, either directly or indirectly. The mask is a 3-digit number: the digits control file permissions for the user, the group, and others, respectively. Each digit is a number from 0 to 7 indicating the permissions that will be blocked, with the value 4 used to block read permission, 2 to block write permission, and 1 to block execute permission. The values may be added together to block more than one permission.

Example:

set the umask to 077

Example:

put the umask into origMask
set the umask to 247 -- Set so user can't write, group members can't read, and others have all permissions blocked
create file "/tmp/permissionsTest"
set the umask to origMask -- Restore it to its original value

Related:

the autoSaveDatabaseUpdates Global Property

Values: True, False

Default: True

Behavior: This property determines whether updates to databases are saved automatically. When set to True, all updates are automatically saved. Set this property to False if you want to write changes manually by using the save changes command.

Example:

set the autoSaveDatabaseUpdates to false

Example:

set the autoSaveDatabaseUpdates to false // Turns off automatic updates
set info to table "memberinfo" of myDB
set member to the record of info where memberNumber is 16
Add 60 days to member's expirationDate
put "23" into member's memberNumber
put the records of info // Displays '((expirationdate:"2020-04-13", membernumber:"16"),(expirationdate:"2019-12-30", membernumber:"18"))'
save all changes to info // Sends all pending updates to the table
put the records of info // Displays '((expirationdate:"2019-12-30", membernumber:"18"),(expirationdate:"2020-06-12", membernumber:"23"))'

Related:

the shellCommand Global Property

Values: A full path to the shell program you want to execute shell commands; ShellExecute; empty

Default: Varies by platform; see the Behavior section below.

Behavior: This property controls which shell program is used to run the command when you use the shell command or function. By default, on Mac and Linux the shellCommand is set to /bin/sh (the Bourne shell). To run commands in a different shell, set the shellCommand to the full path of the shell you want to use before calling the shell function, or to "ShellExecute" or empty.

On Windows, the default setting of the shellCommand global property is ShellExecute. This setting causes the Windows ShellExecute() function to be used to run the specified file.

When using ShellExecute on Windows, several additional parameters besides the command or file can optionally be passed. The second parameter, if given, specifies any parameters to be passed to the command being run. The third parameter specifies the default working directory for the action. The fourth parameter should be a number specifying any optional flags to pass to the underlying ShellExecute() function. Finally, the fifth parameter, if given, specifies an explicit verb to use (such as open, explore, edit, find, or print). Otherwise the default verb defined in the registry (or open) will be used. (When using ShellExecute, no output is returned.) If an error occurs, the result will be set to a number; otherwise it will be empty.

When the shellCommand is not empty and is not set to ShellExecute (the usual case on Mac and Linux, where it is set to /bin/sh by default), if multiple parameters are passed to the shell function, they are treated as separate commands to each be run in sequence within a single shell context.

When the shellCommand is empty, shell treats its first parameter as the command to run and any additional parameters as parameters to be passed to that command. If only a single parameter is passed, it is split by any spaces that are present in the parameter to derive the command and its parameters.

Example:

set the shellCommand to "ShellExecute"
shell "example.bat" -- Runs the indicated batch file

Example:

set the shellCommand to empty
put shell("ls -l") -- Runs the 'ls' command with '-l' parameter
put shell("ls", "-l") -- Does the same thing
note

There is a Windows operating system limitation when running shell commands. When you run a shell command on Windows, you won't see any output from the shell command. To resolve this issue, redirect the output of the command by piping the output to a file. After the script completes, manually read the file contents to see the result.

shell "c:\windows\system32\cmd.exe", <</c "C:\Program Files (x86)\adt-bundle-windows-x86_64\sdk\platform-tools\adb" >> && MyCommand && "> someFile.txt"
put file "C:\wherever\someFile.txt"

Related: