2013-08-28 164 views
0

我经常在学校计算机之间进行切换,并且希望显示隐藏文件,但不是每个人都这样做。通常我使用如何获取Applescript输入以运行终端命令

"defaults write com.apple.finder AppleShowAllFiles -bool true"

命令,但是,那将是非常方便的,如果我可以运行一些AppleScript的,而不是手动复制文本到终端,然后重做这个时候我完成了。所以我试图完成的是接收用户输入的信息,看他们是否要显示所有文件,然后运行该命令。对AppleScript进行一些初步研究后,我能够弄清楚如何构建它的一些基本概念。下面的代码是错误的,所以请以noob错误为借口。

(choose from list {"Hide", "Show"} ¬ 
    with prompt "Do you want to hide or show hidden files?") 
if "Hide" then 
    do shell script "defaults write com.apple.finder AppleShowAllFiles -bool False" 
else 
    do shell script "defaults write com.apple.finder AppleShowAllFiles -bool True" 
end 

我能站起来给用户的对话框,但是,当我试着输入一个选择,它回答:“到boolean类型‘’不能做”隐藏。如果有人能帮助我,让我看看我需要改变什么,那将是不胜感激。

谢谢,迈克尔。

回答

3

choose from list返回所选项目的列表。

choose from list {"Hide", "Show"} with prompt "Do you want to hide or show hidden files?" 
if result is {"Show"} then 
    do shell script "defaults write com.apple.finder AppleShowAllFiles -bool true" 
else 
    do shell script "defaults write com.apple.finder AppleShowAllFiles -bool false" 
end if 
quit application "Finder" 

我用这样的脚本来切换显示隐藏文件:

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

非常感谢您的急躁回应,您对我的代码所做的更改似乎工作得很好。 –

0

从列表中选择返回一个列表(或者,如果用户取消假)。这样做是为了要挟列表转换为字符串:

(choose from list {"Hide", "Show"} ¬ 
    with prompt "Do you want to hide or show hidden files?") as string 

请务必保持括号,否则,将as string强迫你的提示字符串,你仍然会收到一个列表返回。