「AppleScript,Perl,Shell」OS Xでスクリプトスレ

このエントリーをはてなブックマークに追加
929名称未設定:04/04/30 10:49 ID:XWAIfFhk
まず
perl -cw test.pl
で文法チェックしてみる。
OKなら次にデバッグ
perl -d test.pl
s (Single step)で1行づつ実行

てな話が無いのは>>912へのいじめか何かですか?
930名称未設定:04/04/30 16:51 ID:3pArbVsO
> いじめか何かですか
931名称未設定:04/04/30 20:42 ID:svl+Wub0
指定したフォルダのリストを取得して、指定のHTMLにリンクとして上書きする
というスクリプトを作ってまつ。が、うまい書き出し方が思いつかん。orz

set thePath to "hoge" as alias
set theList to list folder of thePath without invisibles
repeat with theItem in theList
set theText to "<A HREF=\"" & thePath & theItem & "\">" & theItem & "</A>"
end repeat

とりあえずここまで作った(短いなオイ)。
repeat文の前後にHTMLに必要なタグを書けば良いと思うが、
うまい事HTMLに書き出す/上書きする方法がわからない……。

誰か知恵を貸してくれ(´・ω・`)
932912:04/04/30 22:29 ID:gOiFajp3
みなさんどうもありがとうございました。
解決しました。

まず>>926さんの言ったとおり1行目と2行目を削除し、
>>925さんのとおりドラッグ&ドロップしてみたら成功しました。
#以降のコメントに不具合があるということがわかったので、
いろいろ調べてみたら改行コードがCRになってました。
最初の方で指摘されていたにもかかわらず…五里霧中で…
>>914さん、>>928さんありがとうございました。

結局LFに指定し直してターミナル上で cd Perlとし、
% perl test.pl
でうまく引き出すことができました。
休日出社&残業でレスが遅くなりご迷惑をおかけしました。
これからも頑張ってみたいと思います。
933931:04/05/01 00:37 ID:THN96K/W
手堅くopen for access命令で逝く事にしますた。一応報告。
934名称未設定:04/05/01 01:15 ID:k3P9SBWy
OSX用の禁煙マラソンカウンターですが、"禁煙継続時間"の一ヶ月の日にちが30日単位みたい
なのでただ単に"--日 --時間--分"の表示に変えたいのですが、どこを書き換えれば良いでしょうか?

http://www.geocities.co.jp/SiliconValley-SanJose/8580/counter_txt/12x.html

お願いします。
935名称未設定:04/05/01 01:32 ID:CrG7KmnS
>>931
open for access で保存するのはいいとして、
theTextはリストにしなくていいの?
set theText to {}
repeat with theItem in theList
set end of theText to "<A HREF=\"" & thePath & theItem & "\">" & theItem & "</A>"
end repeat
936名称未設定:04/05/01 01:34 ID:m86mxAES
AppleScriptで毎日0時に、フォルダ名変更って可能ですか?
その日の日付で「2004-05-01」みたいに。
937名称未設定:04/05/01 01:38 ID:KLhxg6Q7
フォーマット済み日付ならこれで取得できるだろ
do shell script "date +%Y-%m-%d"

後は名前変えれ。
938名称未設定:04/05/01 01:47 ID:m86mxAES
>>937
時間を作って自力でアレコレやってみるっす。
ありがと。
939名称未設定:04/05/01 01:47 ID:CrG7KmnS
>>934
無理矢理、こんな考え方でやってみるとか・・・
試してないけど。

set Dialog_1 to "禁煙時間 " & Y of ret & "年 " & ((mo of ret /30) + d of ret) & "日 " & h of ret & "時間" & mi of ret & "分"
940934:04/05/01 02:10 ID:k3P9SBWy
>>939

いや、本当に普通に……
年と月のカウントを無くし、日数(と時間)だけでカウントさせて
表示できれば良いんです。

よろしくお願いします。
941名称未設定:04/05/01 02:22 ID:1/YCawew
また禁煙カウンタの話か。
結構使ってる人多いんだねえ。
942名称未設定:04/05/01 02:33 ID:toFqrfgz
>>940
set Dialog_1 to "禁煙時間 " & (Y of ret)*365 + (mo of ret)*30 + (d of ret) & "日 " & h of ret & "時間" & mi of ret & "分"

Dialog_5も同じ。
本当はMake_ymdhmのルーチンごと書き直すべきなんだろうけど
943934:04/05/01 09:23 ID:o4Nzm7tu
>>942
ありがとうございます。
禁煙がんがります!
944939:04/05/01 12:18 ID:zUnrTbBV
>>942
あ、そうか、mo*30じゃないと意味ないよね。
何を考えているんだ俺はw
945931:04/05/01 20:15 ID:THN96K/W
>>935
それだ!

それだよ、俺が知りたかったのは正にそれだ。
実はrepeat毎にwrite命令やってたりして……。
量が増えたら激しく面倒な方法とってますた。
サンクス(・∀・)
946名称未設定:04/05/01 22:17 ID:wHTLuioL
>>935
いままでテキストをくっつけて改行区切りにするとき
set theText to theText & "hoge" & return
ってやってたけど
set end of theText to "hoge"
で、最後に
set AppleScript's text item delimiters to {return}
theText as string
ってやった方が見やすくて、tab区切りとかに簡単に変えられるし
早くなるかもしれないと思った。
まだまだ知らない技があるなあ・・・。
947名称未設定:04/05/03 21:51 ID:Jxj7b/Fy
set visible of processes whose name is not "Finder" and name is not "DragThing" to false
の様に書くのがスマートじゃないので

property dontHideApp : {"Finder", "DragThing"}
tell application "Finder"
set visible of processes whose name is not in dontHideApp to false
activate
end tell

の様にしたいのですが、実行時にエラーがでます。
実行時には
whose {"Finder", "DragThing"} contains name
で評価されるのでエラーが出るようなのですが
なんとかなりませんでしょうか?
948名称未設定:04/05/03 22:17 ID:FCc1sp4A
property dontHideApp : {"Finder", "DragThing"}
repeat with anItem in dontHideApp
tell application "Finder"
set (visible of processes whose name is not anItem) to false
activate
end tell
end repeat
949名称未設定:04/05/03 22:18 ID:FCc1sp4A
あ、逆にせな。^^;
950名称未設定:04/05/04 00:22 ID:pOWbWyRn
>>948
レスありがとうございます。
whoseで1行は無理ということでしょうか

関係ない話ですが
AppleScriptの実行ソフトとしてButlerっていいですね。
簡単にメニューバーにボタン形式で置けるし、
スペースがもったいなかったらホットコーナーもある。
ホットコーナーはクリックで作動するので誤作動の心配はほとんどないし
右クリックで左クリックとは違うスクリプトを実行できたりと感動しました。
951名称未設定:04/05/04 01:36 ID:y4xwzfUX
悲しいことに、アプリケーション形式で保存せず、
外部アプリからスクリプト書類を走らせる方が安心なんだよな。
日本語バグのせいで。・゚・(ノД`)・゚・。
952名称未設定:04/05/04 05:18 ID:Rfs4KHrs
アプリケーションバンドルにJapanese.lprojを作ってやるのではなくて?
953名称未設定:04/05/05 07:00 ID:t6q+2SrS
sedやperlで置換文字列にtabを指定することはできないのでしょうか?
954名称未設定:04/05/05 07:32 ID:heqdyoA3
\t
955名称未設定:04/05/05 16:07 ID:T2AeNekL
拡張子を判別して処理を分岐させたくて
下記のようなスクリプトを書いてみたのですがうまくいきません。

tell application "Finder"
get name extension of (choose file)
end tell
set ext to result
if ext is in {"dmg", "iso", "toast"} then
display dialog ext
else
display dialog "error"
end if

お知恵をお貸しください。
956名称未設定:04/05/05 16:22 ID:9JF1J0Lm
>>955
これ自体はちゃんと動いてるみたいだけど。
他の部分で問題があるのかも?
ちなみに頭4行は
tell application "Finder"
set ext to name extension of (choose file)
end tell
にしたほうが間違いがない。
957名称未設定:04/05/05 17:03 ID:T2AeNekL
>>956
なるほど、勉強になります。
でもたとえばdmgファイルを選択したとして、
errorのほうのダイアログが出てきちゃうんです。

if ext is in {"dmg", "iso", "toast"} then
の行をたとえば
if ext is "dmg" then
とすると、うまくダイアログでdmgと表示されるんです。
958名称未設定:04/05/05 17:50 ID:9JF1J0Lm
>>957
そりゃ変だね。どうしてもだめならorで判断させる。
959名称未設定:04/05/05 18:19 ID:T2AeNekL
>>958
if ext is "dmg" or "iso" or "toast" then
こうですか?
これだとdmgの場合OKだけどisoやtoastを開いたときに
errorになりました。
なんだか良く分かりませんがもうちょい調べてみます。
レスどうもです。
960名称未設定:04/05/05 20:03 ID:992SWUHF
if
ext is "dmg"
else if
"iso"
else if
"toast" then
end if
961名称未設定:04/05/05 20:05 ID:992SWUHF
うわ途中で書きこんじまった。
if
ext is "dmg" 〜
else
ext is "iso" 〜
else
ext is "toast" 〜
end if
みたいな書き方はOKなんだっけ?
962959:04/05/06 00:57 ID:NsnRbFq6
>>961
それでいけると思いますが簡潔にしたかったもので。
で、いろいろ試行錯誤した結果
if (ext is "dmg") or (ext is "iso") or (ext is "toast") then
とすることでちゃんとした結果が得られました。
再度、レスしてくれた方々ありがとう。

また、何故
if ext is in {"dmg", "iso", "toast"} then
とか
if ext is "dmg" or "iso" or "toast" then
みたいな書き方じゃだめなのか説明できる人がいたら
よろしくお願いします。
963959:04/05/06 01:39 ID:NsnRbFq6
最後に。

on open theFiles
repeat with anItem in theFiles
tell application "Finder"
set ext to name extension of anItem
end tell
if (ext is "dmg") or (ext is "iso") or (ext is "toast") then
launch application "Toast 6 Titanium"
tell application "Toast 6 Titanium"
mount image anItem
end tell
end if
end repeat
tell application "Toast 6 Titanium" to quit
end open

こんなスクリプトが出来上がりました。
改善すべき所とかあったらよろしくお願いします。
964名称未設定:04/05/06 01:52 ID:g/QA3lYK
if {"dmg", "iso", "toast"} contains ext then
で期待通りの動きをするような気もする。

launch application "Toast 6 Titanium"
は不要なような気もする。
965名称未設定:04/05/06 03:47 ID:IG2MYn1A
>>964
launchはToastのアプリケーションウィンドウが開くのを回避しているものと思われ。
966965:04/05/06 03:55 ID:IG2MYn1A
>>963
「launch application "Toast 6 Titanium"」はrepeatの外に追い出した方がいいと
思う。該当するファイルがなかった場合無駄に立ち上げちゃうことになるけれど、
二回目以降必要ない命令が繰り返されるのはちょっといやな感じ。折角quit命令も
repeat外にあることだし。
967959:04/05/06 22:54 ID:NsnRbFq6
>>964
試してみたけどうまくいきませんでした。

>>966
そのほうがいいですかね。
Toastが無駄に立ち上がっちゃうのがいやだったので。
968名称未設定:04/05/06 23:50 ID:APlwEv0S
tell application "Finder"
if name of every process contains "Toast Titanium" then tell application "Toast 6 Titanium" to quit
end tell
こうすれば該当するのがなくても無駄にtoastが立ち上がることはないかな。
toastは5も6もプロセス名は"Toast Titanium"だけど。

それにしても959さんはリストのif文がうまくいかないのはなんでだろうね。
AppleScriptのバージョンの違いとかあるのかな?
969名称未設定:04/05/07 00:41 ID:7actb1OW
>>968
数年前試した時にはその記述法ではできなかった気が。非常に不確かな記憶だけど。
970名称未設定:04/05/07 19:36 ID:3ATEIP4+
>>895

AppleScript 1.9.3を使っているので試してみようと思い次のように書きましたがエラーがでます。

tell application "Finder"
choose file default location disk "Macintosh HD"
end tell

エラー文は
「Finder でエラーが起きました:disk "Macintosh HD" を item にできません。」です。


どうやったらいいのか教えてください。
971名称未設定:04/05/07 19:45 ID:t0AHYr6o
alias
972970:04/05/07 19:48 ID:3ATEIP4+
>>971

ありがと〜〜〜!

choose file default location disk "Macintosh HD" as alias

でいっちゃいました!
973名称未設定:04/05/07 19:48 ID:o6t9tac0
>970
テキトーにやるのではなく、ちゃんと用語説明を読もう。

choose file
    [default location alias] -- the default file location

つまりalias型で渡してやらんとダメ。

例えば
tell application "Finder"
set TheDisk to (disk "Macintosh HD" as alias)
choose file default location TheDisk
end tell
とか。

もう一度言うけど、テケトーにやるのではなく、ちゃんと用語説明を読め。
974970:04/05/08 19:14 ID:8FgKRejr
applescriptでアプリケーションをつくっています(xcode)

AppleScriptKit.asdictionaryを見ると、
Control View Suite→Class button: A button→Properties:

titleやbezel styleやimageといったものがあります。

title、bezel styleは問題なく使えるのですが、
imageが使えません。

助言おねがいします。
975名称未設定:04/05/08 19:36 ID:ABrqcVlP
>974
昨日の君の悩み(>970)と似ているな。引数の型を意識しろってばさ。
imageはimage 型で渡してやらないとダメ。

プロジェクトにNantara.tiffなどと画像ファイルが登録されているとして、それを表示させるには

set Myimage to (load image "Nantara") -- load image コマンドで画像ファイルをimage型に
set image of button "ボタンの名前" to Myimage

でどうですか。
976970:04/05/08 20:15 ID:8FgKRejr
>>975
ありがとうございます。

ビルドまではうまくいきましたが、実行するとエラーがでます。

体系的に勉強できるサイト・本はありませんか?
ぜんまいびゅんびゅん(?)とやらを買ったほうがよいのでしょうか。

きちっと勉強せずに人にきいてばかりなので出直してきたいと思います。
977名称未設定:04/05/08 20:48 ID:ABrqcVlP
>976
サイト >>4
または/Developer/Documentation/AppleScript内のhtmlドキュメント(英語)


・AppleScript そのものの本
・AppleScript で何かやろうという本
・AppleScript とXcode (AppleScript Studio)で何か作ろうという本

などいろいろあるので自分の現状・欲求に即して選ぶと良い。
978名称未設定
う〜ん。いいIDだ。(w