アプリ版:「スタンプのみでお礼する」機能のリリースについて

MacOS 9.2を使用しています。AppleScriptで2つのファイルを比較して差異があった場合にそれをテキストファイルに出力することはできますでしょうか?できるならその記述方法を教えてください。

A 回答 (4件)

#1です。

ちょっと比較・修正からはずれているのですがご容赦を。

これは私が常用している、ファイルのクリエータをあらかじめセットした一覧から選択して一括変更するスクリプトです。2行目が順にYooEdit、iCab、PictureViewer、SimpleTextのクリエータをセットしている行です。長いと思われるでしょうが、Macらしい挙動を求めるとこのくらいになってしまいます。

FinderPopを使われていますか?以下のスクリプトを「コンパイル済みスクリプト」で保存して、FinderPop項目フォルダーに入れると、Finderでファイルを複数選択後、そのままコンテクストメニューからスクリプトを実行できます。もちろん「アプリケーションで保存」でも大丈夫です。ドロップレットにするには先頭に「on open」、最終行に「end open」を挿入してからアプリケーションで保存します。

=====ここからコピー(この行は不要)=====
set theFiles to {}
set creatorList to {"YoED", "iCAB", "ogle", "ttxt"}

tell application "Finder"
repeat with aFIle in selection --セレクションの振り分けをする
if (kind of aFIle ends with "画像") or (kind of aFIle ends with "書類") ツ
or (kind of aFIle ends with "ファイル") or (kind of aFIle ends with "ピクチャ") then
set end of theFiles to aFIle
else
display dialog name of aFIle & ツ
"は処理できませんのでスキップします" buttons {"Skip"} default button 1 with icon stop giving up after 2
end if
end repeat
end tell

if (count of theFiles) = 0 then
display dialog "書類が選択されていませんので終了します" buttons {"Quit"} default button 1 with icon stop giving up after 2
return
end if

set aCreator to choose from list creatorList with prompt "Choose Creator" --クリエータ変換データの設定処理

tell application "Finder"
try
repeat with aFIle in theFiles --クリエータの変更処理
set creator type of aFIle to aCreator
end repeat
on error
display dialog "作業をキャンセルしました" buttons {"OK"} default button 1 with icon note giving up after 2
(*リスト選択でキャンセルするとaCreatorにfalseがセットされる*)
end try
end tell
=====ここまでコピー(この行は不要)=====

ファイルのクリエータを調べるには、そのファイルを選択状態にして、以下のスクリプトをスクリプト編集プログラムから実行します。結果ウインドウにクリエータが表示されます。

=====ここからコピー(この行は不要)=====
tell application "Finder" to get creator type of selection
=====ここまでコピー(この行は不要)=====

同様にファイル名、修正日、作成日が得られるスクリプトです。

=====ここからコピー(この行は不要)=====
tell application "Finder" to set theData to info for selection
get {name, modification date, creation date} of theData
=====ここまでコピー(この行は不要)=====

新しく質問を出してもらえれば目立つので、皆さんからレスがつきますよ。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございました。Macの情報はネットにもあまり落ちていないので、助かりました。

お礼日時:2004/10/12 21:49

#1です。


>open for accessでファイルを開き、Read、Writeで読み書きします。

ファイルI/Oできるんですね。以後、気をつけます。

MacJPerlでやるなら、新規ファイルに以下のスクリプトをペーストして、Dropletで保存して下さい。名前は適当につけて下さい。このドロップレットにテキストファイルを2つドロップすると差分ファイルDiffResult.txtが新規作成されます。
このスクリプトはとりあえず差分を抽出するというレベルです。最低限のエラー処理と動作確認はしてありますが、念のためダミーファイルで試して下さい。

重要:DiffResult.txtと同名のファイルがあると上書きされてしまいます。

=====ここからコピー(この行は不要)=====
#!/usr/local/bin/perl

$i=0;
while($file = shift @ARGV){
open IN, "<$file" or die;

$i++;
if ($i==1){
$name1=$file;
while(<IN>){
chomp($_);
push @doc1,$_;
}
}elsif($i==2){
$name2=$file;
while(<IN>){
chomp($_);
push @doc2,$_;
}
}

close IN;
}

open OUT, ">DiffResult.txt" or die;
MacPerl::SetFileInfo("YoED", "TEXT", "DiffResult.txt");

$j=@doc1;
$k=@doc2;
$j=$k if $j<$k ;
$m=0;
for($i=1;$i<=$j;$i++){
$m++;
$s=shift @doc1;
$t=shift @doc2;
if($s ne $t){
$line1=$name1."(".$m."): ".$s;
$line2=$name2.": ".$t;
print OUT $line1."\n".$line2."\n";
}
}

close OUT;
MacPerl::Quit(2);
    • good
    • 0
この回答へのお礼

ありがとうございます。使わせていただきます。

お礼日時:2004/10/05 22:45

単純なファイルの読み込み・書き込みだけならAppleScriptでもできます。


open for accessでファイルを開き、Read、Writeで読み書きします。
以下のURLに命令の書式が載っているので参考にしてください。
http://homepage1.nifty.com/ton_b/dic/OSAX/conten …

ただ、高度な操作を行うにはOSAXやアプリケーションの力を借りる方が楽でしょう。
テキストデータを扱うOSAXの1つにTanaka's OSAXがあります。
http://mtlab.ecn.fpu.ac.jp/tanaka_tool.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。それからいいサイトを教えていただいてありがとうございました。お気に入りにいれて勉強します。

お礼日時:2004/10/05 22:42

■テキストファイルの内容を行単位で比較して、その差分をテキストファイルに出力したいのであれば、AppleScript単体ではできません。



JeditやQuoEditのような、テキストデータをAppleScriptで操作できるエディタが別途必要です。なお、アプリごとにAppleScriptの構文が違うので、その修得も必要です。
QuoEditはFinderと同様にレコーダブルですから、とりあえず試用してみてはいかがでしょう。

AppleScriptにこだわらないならMacJperlが最適です。テキスト処理ならこちらの方が速いし、楽です。

もし、テキストファイルに出力しなくてもよいなら、フリーウエアのDODO Diffで差分をチェックできます。

■ファイルの属性(修正日やサイズ等)を比較・変更したいのならFinderに指示するだけなのでかんたんです。でもテキストファイルに出力するためにはやはりスクリプト対応のエディタ等が必要です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。やはりAppleScriptではできないのですね。。自分でもいろいろ調べてみたのですが、情報がなくて困っていました。
ご指摘のとおりアプリを使うのは私にはちょっと困難そうですね。ここでまた質問するのはだめかもしれませんが、後学のため、最後に記載されているファイルの属性を比較するスクリプトをおしえていただけませんか?

お礼日時:2004/10/05 22:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!