Проверка, существует ли элемент как папка с использованием нотации POSIX в AppleScript - PullRequest
0 голосов
/ 26 апреля 2020

У меня есть строка, которая представляет файл / папку в папке в нотации POSIX:

/Users/surfacedetail/Desktop/Temp/Test1

Я хочу проверить, существует ли Test1 И является ли папка. Следующее говорит, что он существует:

if exists my POSIX file myFileOrFolder then
    beep
end if

Это работает нормально, но как определить, является ли это папка или файл?

Проблема в том, что это часть массивного скрипта, это лучший тест, он использует системные события, но он не работает. Я думаю, это как-то связано с тем, как я строю строку пути.

tell application "Finder"
    set myScriptFilePath to (path to me)
    set mySourceFolder to folder of myScriptFilePath
    set myFileAliasList to the entire contents of mySourceFolder

    set myPOSIXSourceFolder to URL of mySourceFolder
    set myPOSIXSourceFolder to characters 8 thru -1 of myPOSIXSourceFolder as string

    repeat with myFile in myFileAliasList
        set myFileName to name of myFile
        log "myFileName: " & myFileName

        if (myFileName ends with ".txt") then
            set AppleScript's text item delimiters to "."
            set myFolderName to first text item of myFileName
            set myFolderPath to myPOSIXSourceFolder & myFolderName as string
            log "myFolderPath: " & myFolderPath

            tell application "System Events"
                if not (exists folder myFolderPath) then
                    beep
                    display dialog "Could not find Folder for File: " & myFileName
                    return {}
                end if
            end tell

        end if
    end repeat
end tell

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Исправлено! Это потому, что я не восстанавливал разделитель текста, ему нужно было следующее:

set mySaveASDelimiters to AppleScript's text item delimiters

изменить разделители

set AppleScript's text item delimiters to mySaveASDelimiters
0 голосов
/ 26 апреля 2020

Вы можете сделать это с System Events без приведения типа

set thePath to "/Users/surfacedetail/Desktop/Temp/Test1"

tell application "System Events"
    if exists folder thePath then
        beep
    end if      
end tell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...