Components All New MacOS Windows Linux iOS
Examples Mac & Win Server Client Guides Statistic FMM Blog Deprecated Old

Path.AddPathComponent

Adds a new path component.

Component Version macOS Windows Linux Server iOS SDK
Path 6.0 ✅ Yes ✅ Yes ✅ Yes ✅ Yes ✅ Yes
MBS( "Path.AddPathComponent"; Path; Component... )   More

Parameters

Parameter Description Example
Path The native file path. "/Users/cs/Desktop"
Component... The new path component. "Hello"

Result

Returns path or error.

Description

Adds a new path component.
The path provided as parameter does not need to end with a slash or backslash.

This function requires a native path. Use Path.FileMakerPathToNativePath to convert a FileMaker path to a native path if required. If you like to have the user choose the path, you can use FileDialog functions.
For Server be aware that server has limited permissions and may not be able to access all files on a computer.

This function takes variable number of parameters. Pass as much parameters as needed separated by the semicolon in FileMaker.
Please repeat Component parameter as often as you need.

Examples

Adds a path component to a path:

MBS( "Path.AddPathComponent"; "/Users/cs/Desktop"; "Hello" )

Adds a file name:

MBS( "Path.AddPathComponent"; "/Users/cs/Desktop/"; "test.txt" )

Adds a file path on Windows:

MBS( "Path.AddPathComponent"; "c:\\Test"; "test.txt" )

Get file name from container and add to folder path:

Set Variable [$name; Value:GetAsText ( Container Batch Export::Test1 )]
Set Variable [$name; Value:GetValue($name; 1)]
Set Variable [$name; Value:MBS( "Path.LastPathComponent"; $name )]
Set Variable [$dpath; Value:MBS( "Path.AddPathComponent"; $FolderPath; $name )]

Create folder on Desktop:

Set Variable [$folder; Value:MBS( "Folders.UserDesktop" )]
If [IsEmpty(Container Export::Name)]
    Set Field [Container Export::Name; "Record " & Get(RecordID)]
End If
Set Variable [$path; Value:MBS( "Path.AddPathComponent"; $folder; Container Export::Name )]
Set Variable [$r; Value:MBS("Files.CreateDirectory"; $path)]

Write container to temp file and launch:

# get temp folder
Set Variable [$TempFolder; Value:MBS( "Folders.SystemTemporary" )]
# and file name from container
Set Variable [$name; Value:MBS( "Path.LastPathComponent"; test::myContainer )]
# add name to folder path
Set Variable [$TempPath; Value:MBS( "Path.AddPathComponent"; $TempFolder; $name )]
# now write temp file
Set Variable [$r; Value:MBS( "Files.WriteFile"; test::myContainer; $TempPath)]
# and launch file
Set Variable [$r; Value:MBS( "Files.LaunchFile"; $TempPath)]

Add multiple path componennts:

MBS( "Path.AddPathComponent"; "/Users/cs/Desktop"; "Hello"; "World"; "test" )

Example result: /Users/cs/Desktop/Hello/World/test

Export a container to desktop:

# get path stored in the container field
Set Variable [ $ContainerPath ; Value: GetAsText ( Contacts::Photo Container ) ]
# get the file name portion
Set Variable [ $ContainerName ; Value: MBS( "Path.LastPathComponent"; $ContainerPath ) ]
# take a folder on the computer, e.g. desktop
Set Variable [ $DesktopFolder ; Value: MBS( "Folders.UserDesktop" ) ]
# build path with file name on that folder
Set Variable [ $FilePath ; Value: MBS( "Path.AddPathComponent"; $DesktopFolder; $ContainerName ) ]
# and export the content of container to that path
Set Variable [ $r ; Value: MBS( "Container.WriteFile"; Contacts::Photo Container; $FilePath ) ]

Import all files in a folder:

# list files in a folder
Set Variable [ $r ; Value: MBS("Files.List"; $FolderPath) ]

# loop over the files
Set Variable [ $count ; Value: ValueCount ( $r ) ]
Set Variable [ $index ; Value: 0 ]
If [ $count>0 ]
    Loop
        # build path
        Set Variable [$fileName; GetValue ( $r ; $index+1 )]
        Set Variable [$filePath; Value: MBS( "Path.AddPathComponent"; $FolderPath; $fileName )]
            Set Variable [$fileData; Value: MBS("Container.ReadFile"; $filePath)]

        # create record for new file
        New Record/Request
            Set Field [MyData::Container; $fileData ]
        Set Field [MyData::Name; $fileName ]
        Commit Records/Requests [ With dialog: Off ]

        Set Variable [ $index ; Value: $index + 1 ]
        Exit Loop If [ $index = $count ]
    End Loop
End If

See also

Release notes

Example Databases

Blog Entries

This function is free to use.

Created 30th November 2015, last changed 20th February 2024


PageSetupDialog.SetScalingFactor - Path.FileMakerPathToNativePath