ファイルとフォルダの参照
SenseTalkは、ファイルやファイルシステムを操作するためのいくつかの方法を提供しています。ここで説明するコマンドと関数を使用して、ファイルやファイルシステムの情報にアクセスしたり、作業ディレクトリを決定したり変更したり、パスやディレクトリについての詳細を確認したりできます。また、ファイルサイズや割り当てられた権限など、個々のファイルのプロパティにもアクセスすることができます。
ファイルやファイルシステムオブジェクトを操作するためのSenseTalkのコマンドと関数は、テスト対象のシステム(SUT)ではなく、ローカルマシンで動作します。
以下の例では、SenseTalkを使用してファイルやファイルシステムの情報にどのようにアクセスするかを示しています。ファイルの作成や削除、ファイルへの書き込み、ファイルやファイルシステムオブジェクトの変更方法については、ファイルとフォルダの相互作用を参照してください。
ベストプラクティスとして、SenseTalkスクリプト内で参照されるすべてのファイルは、スイートウィンドウ内のリソースペインを通じてEggplant Functionalに追加するべきです。この方法は、指定されたスイートのスイートディレクトリ内のリソースディレクトリにファイルを保存します。SenseTalkはローカルファイルシステム上の他の場所に保存されたファイルにアクセスすることができますが、リソースディレクトリを使用すると追加の機能が提供されます。詳細については、リソースペインを参照してください。
スクリプト内でファイルを参照する
type code
スクリプト内でファイルを参照するには、単に file
という単語に続けてファイルの名前となる式を使用します。 folder
という単語を file
の代わりに使用することて、同様にフォルダを参照することもできます。
Syntax:
file filePath
folder filePath
directory filePath
folder
とdirectory
の単語はSenseTalkスクリプト内で交互に使用されます。スクリプト内でfolder
の単語が使用されている場所で、代わりにdirectory
の単語を使用することができます。
_filePath_は、Mac/Linux形式またはWindows形式のパスのテキスト、またはパスの各コンポーネントが一つのアイテムであるリストとすることができます。
指定する名前は、ファイルまたはフォルダの完全な(絶対)パス名、または現在の作業フォルダに対する相対パスとすることができます( the folder
グローバルプロパティを参照)。SenseTalkは、次のルールに従って、指定された名前に基づいてファイルの完全な「絶対」パス名を決定します:
- 名前がスラッシュ (/) で始まるか、パスリストの最初のアイテムが "/" であれば、それは既に絶対ファイル名です
- 名前がドライブレターとコロンに続くスラッシュ(例: "C:\")で始まるか、パスリストの最初のアイテムがドライブレターとコロンで、2番目のアイテムがスラッシュであれば、それは既に絶対ファイル名です
- 名前がチルダとスラッシュ (~/) で始まる場合、それはユーザーのホームフォルダに対する相対パスを表します
- 名前がチルダ (~) に続くユーザー名で始まる場合、それはその特定のユーザーのホームフォルダに対する相対パスを表します
- 名前がピリオドとスラッシュ (./) または二つのピリオドとスラッシュ (../) で始まる場合、それは現在の作業フォルダまたはその親フォルダからの相対パスを表します
- それ以外の場合、それは現在の作業フォルダ内のファイルまたはパスを表します
fileDescription()
関数を使用して、ファイルまたはフォルダに関する情報パケットを取得します。返される値はfileDescriptionオブジェクトです。fileDescriptionは、テキストとして表示される場合、ファイルの短い名前として現れるSenseTalkオブジェクト(プロパティリスト)ですが、そのフルパスを知っており、また、ファイルに関する多くの追加情報も含んでいます。
Example:
open file"/etc/passwd"
move file "runlog24" into folder "archivedLogs"
Folder
, Directory
関数
挙動: 指定したファイルパスの親フォルダを返します。
folder
関数(またはその同義語、directory
)を使用して、指定したファイルまたはフォルダを含むフォルダへのパスを取得します。
返される値は、スラッシュで終わります。ただし、the folderNamesEndWithSlash
グローバルプロパティが false に設定されている場合は除きます。スラッシュで終わることで、単にファイル名を追加するだけでフルパス名を作成することが容易になります。
Syntax:
{the} folder of filePath
folder( filePath )
指定された filePath(以下のSyntaxを参照)が絶対パスでない場合、それは現在の作業フォルダに対する相対パスとして扱われます。これは the folder
グローバルプロパティで示されます。folder
関数は、fileDescription
オブジェクト( files()
や fileDescription()
関数の返り値など)またはスクリプトファイルオブジェクトを引数に呼び出すこともできます。これにより、指定されたファイルの親フォルダを取得します。
フォルダ関数によって返される値は、実際には fileDescription
オブジェクトですが、ほとんどの目的では単に文字列として扱うことができます。その文字列値はフォルダへのフルパスです。
例:
put the folder of myFile into myFolder
put folder(someFile) & "siblingFileName" into newFile
LastPathComponent
関数
挙動: ファイル名からファイル拡張子を返します。
lastPathComponent
関数は、ファイルまたはフォルダのフルパス名がある場合に使用します。そして、フルパスなしで、ただローカル名を取得したい場合に使用します。
Syntax:
{the} lastPathComponent of filePath
lastPathComponent( filePath )
例:
put the lastPathComponent of fullPath into fileName
put lastPathComponent("/Users/jc/Documents/Jan24.data") -- "Jan24.data"
FileExtension
関数
挙動: ファイルパスを、標準フォーマットの個々のパスコンポーネントのリストとして返します。
fileExtension
関数は、ファイルまたはフォルダのフルネームがある場合に使用します。そして、ただファイル拡張子を取得したい場合に使用します。拡張子は名前の最後のピリオド以降の部分です。ピリオドは返される拡張子には含まれません。
Syntax:
{the} fileExtension of fileName
fileExtension( fileName )
例:
put the fileExtension of fileName into extension
put fileExtension("/Users/jc/Documents/Jan24.data") -- "data"
PathList
関数
挙動: filePath
関数は、ファイルパスを標準(Mac/Linux/web)フォーマットの文字列として返し、パスコンポーネント間のセパレータとしてスラッシュを使用します。windowsFilePath
関数は同様ですが、コンポーネント間のセパレータとしてバックスラッシュを使用して、ファイルパス文字列をWindowsフォーマットで返します。
pathList
関数は、ファイルまたはフォルダのフルまたは部分的なパス名がある場合に使用します。そして、そのパスの個々のコンポーネントを標準フォーマットで含むパスリストを取得したい場合に使用します。
Syntax:
{the} pathList of filePath
pathList( filePath )
例:
put the pathList of filePath into filePathList
put pathList("/Users/sj/Documents/MLK.txt") --[/,Users,sj,Documents,MLK.txt]
FilePath
, WindowsFilePath
関数
挙動: ファイルパスを"解決済み"標準形式の文字列として返し、それは必要に応じて現在のフォルダを考慮したファイルへのフル絶対パスであり、".."や"~"のようなコンポーネントを解決します。
filePath
またはwindowsFilePath
関数は、ファイルまたはフォルダのフルまたは部分的なパス名が任意の形式である場合に使用します。そして、パスコンポーネント間にスラッシュを使用する標準のMac/Linux/UNIXテキスト表現、またはパスコンポーネント間にバックスラッシュを使用するWindowsテキスト表現を取得したい場合に使用します。
Syntax:
{the} filePath of filePath
filePath( filePath )
{the} windowsFilePath of filePath
windowsFilePath( filePath )
例:
put the filePath of fullPath into stdPath
put filePath("\wiki\en\Home") -- "/wiki/en/Home"
put windowsFilePath("/Admin/theo/x32.jpg") -- "\Admin\theo\x32.jpg"
put filePath of ["a","b","c"] -- "a/b/c"
put windowsFilePath of ["a","b","c"] -- "a\b\c"
ResolvedFilePath
関数
挙動: ファイルシステムオブジェクトのローカル名を返し、親フォルダへのパスを除去します。
resolvedFilePath
関数は、ファイルまたはフォルダの完全な実際のパスを決定したい場合に使用します。ユーザーのホームフォルダを参照する"~"や任意のフォルダの親フォルダを参照する".."などのパスメカニズムのため、すべてが同じ場所を参照する複数の異なるパスが可能であるためです。resolvedFilePathは、同じファイルを表しているかどうかを確認するためにパスを比較するために使用できるパスの標準表現を取得するために使用できます。
Syntax: {the} resolvedFilePath of filePath
resolvedFilePath( filePath )
例:
put the resolvedFilePath of fileName into resolvedName
if resolvedFilePath(it) is resolvedFilePath(saveFile) then
//Do things
end if
FileDescription
関数
挙動: 与えられたファイルに関する情報を含むfileDescriptionオブジェクトを返します。
copy file
やrename
のようなファイルを操作するSenseTalkのコマンドや関数、またはdiskSpace()
関数は、ファイル名の代わりに使用されるfileDescriptionオブジェクトを認識し、実際のファイルを識別するために長い名前を使用します。このようにして、fileDescriptionオブジェクトは、変数に保存したり、パラメータとして渡したりすることができるファイル識別子として機能します。
Syntax:
{the} fileDescription of filePath
fileDescription( filePath )
_filePath_は、ファイルへのフルパス、または現在の作業フォルダに対するファイル名である場合があります。返される値は、fileDescriptionオブジェクトです(objectTypeが“fileDescription”に設定されたプロパティリスト)。fileDescriptionオブジェクトには、ファイルのローカル名に設定されたasTextプロパティが含まれているため、オブジェクトを表示すると、単にファイルの名前が表示されます。