보이지 않는 항목이 보이는지 확인하는 방법은 무엇입니까?


0

보이지 않는 객체가 보이는 경우 AppleScript에서 어떻게 확인합니까? 보이는 경우 다음 defaults write com.apple.finder AppleShowAllFiles 0 을 수행하십시오 defaults write com.apple.finder AppleShowAllFiles 1. 보이지 않는 경우 : .

한 스크립트 여야하므로 한 번의 클릭으로 표시를 변경할 수 있습니다. AppleScript로 가능합니까?

답변:


1

grgarside의 스크립트에 대한 대안으로 Finder를 다시 시작할 필요가 없으며 열린 창을 새로 고치기 만하면됩니다.

앱 또는 Automator에 서비스로 저장할 수 있습니다. System Prefs> Keyboard> Shortcuts> Services에서
실행되는 서비스로 사용 Cmd ⌘ H 됩니다. …… Shortcuts> App Shortcuts의 'Hide Finder'키 명령을 기본값 이외의 것으로 변경해야했습니다.

서비스로 추가하려면 Automator를 시작한 다음 파일 메뉴> 새로 만들기를 실행하십시오.
대화 상자에서 서비스를 선택한 다음 Applescript 실행을 새 Automator 창으로 드래그하십시오. -바꾸기 (* 스크립트는 여기 *) 및 저장
안에 스크립트를 복사 / 붙여 넣기 on run하십시오. 다른 모든 것에는 기본 매개 변수 만 필요합니다.

여기에 이미지 설명을 입력하십시오

시스템 환경 설정> 키보드> 바로 가기> 서비스에서 마지막 행으로 추가됩니다. 원하는 트리거 키 명령을 설정하십시오.

여기에 이미지 설명을 입력하십시오

Cmd ⌘ H 나와 같은 것을 사용 하면 Finder 숨기기를 다른 것으로 변경해야합니다. 명령이 필요 없기 때문에 가비지 바로 가기를 사용했습니다 ...

여기에 이미지 설명을 입력하십시오

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState


tell application "Finder"
    set theWindows to every Finder window
    repeat with i from 1 to number of items in theWindows
        set this_item to item i of theWindows
        set theView to current view of this_item
        if theView is list view then
            set current view of this_item to icon view
        else
            set current view of this_item to list view

        end if
        set current view of this_item to theView
    end repeat
end tell

스크립트 자체는 보이지 않는 플래그의 현재 상태를 읽은 다음 (grgarside 버전보다 우아하지만 효과적으로), 열린 각 창을 다른보기 유형 (목록, 아이콘 등)으로 전환 한 다음 다시 다시 표시합니다.

편집 : El Capitan에서 더 이상 창을 새로 고치지 않아도 Finder를 다시 시작해야합니다.
엘 캐피 탄의 새 버전

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState & "; killall Finder"

감사! 효과가있다. 그러나 작업 모드의 배경에 대해 스크립트가 무엇을하고 있는지 설명 할 수 있습니까? 바로 가기로 서비스를 추가하려면 어떻게해야합니까?
user121028

답변을 조정했습니다 ...
Tetsujin

0

AppleShowAllFiles의 현재 값에 따라 b의 값을 true 또는 false로 설정합니다.

[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true

따라서 다음과 같은 스크립트를 작성할 수 있습니다.

do shell script "[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true
defaults write com.apple.finder AppleShowAllFiles -bool $b"
tell application "Finder"
    quit
    delay 0.2 -- without this delay there was a "connection is invalid" error
    reopen -- open a new default window
    activate -- make Finder frontmost
end tell

Stack Overflow 의이 답변에 대한 Lauri의 모든 크레딧


그리고 스크립은 여기서 무엇을합니까? 은 "$ -bool의 B"이고, "[[$ (기본값 com.apple.finder의 AppleShowAllFiles 읽기) = 1]"무엇
user121028
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.