ユーザーが1つのファイルを選択するapplescriptがあり、そのファイルの名前から拡張子を引いたものを取得する必要があります。
別のサイトで、これが機能するという投稿を見つけました。
tell application "Finder"
set short_name to name of selected_file
end tell
ただし、拡張子も返します。ファイルの名前だけを取得するにはどうすればよいですか?
ユーザーが1つのファイルを選択するapplescriptがあり、そのファイルの名前から拡張子を引いたものを取得する必要があります。
別のサイトで、これが機能するという投稿を見つけました。
tell application "Finder"
set short_name to name of selected_file
end tell
ただし、拡張子も返します。ファイルの名前だけを取得するにはどうすればよいですか?
Finderまたはシステム イベントに名前の拡張子を問い合わせて、その部分を完全な名前から削除することができます。これにより、名前にピリオドが含まれていたり、拡張子が思っていたものと異なる可能性があるという問題も回避できます。
set someItem to (choose file)
tell application "System Events" to tell disk item (someItem as text) to set {theName, theExtension} to {name, name extension}
if theExtension is not "" then set theName to text 1 thru -((count theExtension) + 2) of theName -- the name part
log theName & tab & theExtension
これは、ピリオドを含むファイル名と拡張子を持たないファイル名 (両方ではない) で機能するはずです。複数の拡張子を持つファイルの最後の拡張子を返します。
tell application "Finder"
set n to name of file "test.txt" of desktop
set AppleScript's text item delimiters to "."
if number of text items of n > 1 then
set n to text items 1 thru -2 of n as text
end if
n
end tell
name extension
複数の拡張子を持つファイルの最後の拡張子も返します。
tell application "Finder"
name extension of file "archive.tar.gz" of desktop -- gz
end tell
このスクリプトは、ASObjC Runner を使用してファイル パスを解析します。ASObjC Runner はこちらからダウンロード してください。
set aFile to choose file
tell application "ASObjC Runner" to set nameS to name stub of (parsed path of (aFile as text))
ファイル名だけを取得するスクリプトは次のとおりです。
set filesFound to {}
set filesFound2 to {}
set nextItem to 1
tell application "Finder"
set myFiles to name of every file of (path to desktop) --change path to whatever path you want
end tell
--loop used for populating list filesFound with all filenames found (name + extension)
repeat with i in myFiles
set end of filesFound to (item nextItem of myFiles)
set nextItem to (nextItem + 1)
end repeat
set nextItem to 1 --reset counter to 1
--loop used for pulling each filename from list filesFound and then strip the extension
--from filename and populate a new list called filesFound2
repeat with i in filesFound
set myFile2 to item nextItem of filesFound
set myFile3 to text 1 thru ((offset of "." in myFile2) - 1) of myFile2
set end of filesFound2 to myFile3
set nextItem to (nextItem + 1)
end repeat
return filesFound2