macとnortonに詳しい方、教えてください。


有効な回答には1,000ポイント差し上げます。

誤って消去したファイルを復活させようとしていますが、ファイルセーバーで復旧は不可能。よって、Uneraseで復活しています。この時にリソースが残っているものについては、リスト上でデータの上にファイルがあるので、統合できます。これによって、ファイル名なども正常に復旧できます。もちろん、リソースがないものもあり、こちらはデータのみを復活しています。ただ、この方法では、1ファイルずつ手動でリソースとデータの統合処理をする必要があり、(60,000ファイルあるため)実質的には不可能です。スクリプトなどの自動処理はできないでしょうか?OSは10.3です。

他のユーティリティや修復業者では復旧自体が不可能でした。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2004/12/30 15:09:36
  • 終了:--

回答(2件)

id:irukajp No.1

irukajp回答回数174ベストアンサー獲得回数22004/12/30 15:52:57

http://www.ns.musashi-tech.ac.jp/~inoue/Pages/Macintosh/make.dmg...

hdiutil, hdidとdittoによる、HFS+のdmgイメージの作り方

データファイルとリソースファイルが別にあり、それぞれ規則的なファイル名が付いているなら、それらをスクリプトで統合することはできます。

http://pcweb.mycom.co.jp/column/osx/023/index.html

【コラム】OS X ハッキング! (23) これでResEditいらず?(1) | パソコン | マイコミジャーナル

こちらに詳細が書いてあります。

DeveloperToolsが必要です。CDを持っていなくても、Appleから無料でダウンロードできます。

「まずはコマンドサーチパスの設定から」を最初に行わないと、各コマンドの前に/Developer/Tools/を付けないといけません。

こちらがシェルスクリプトの書き方です。他にもGoogleでさがしてみてください。

実行するコマンドを、一行一行、ファイルに書けばいいだけです。

id:telme

回答ありがとうございます。

Uneraseで復活させるリストは次のようになります。

テスト.src(リソース)

PostscriptEPS001(テスト/データフォーク)

PostscriptEPS002(テスト2/データフォーク/リソースなし)

テスト3.src(リソース)

PostscriptEPS003(テスト3/データフォーク)

リソースとデータの関連付けは並び順のみです。復活したデータは作成日も消失していること、リソースが抜けているものもあることから、一度、全部を復旧した後にどのリソースとデータが適合するのか照合するのは不可能だと思いますが、いかがでしょうか。このため、現実的にはUnerase上のリストになっている状態でapple scriptなどで処理する方法しかないか思うのですが、回答頂いた内容で処理できるでしょうか?

2004/12/31 12:21:33
id:irukajp No.2

irukajp回答回数174ベストアンサー獲得回数22004/12/31 15:20:23

ポイント500pt

紹介した方法では、UnEraseの順番は考慮できません。しかし、規則的な数字を含んだファイル名を付けられるなら、順番は考慮できます。

リソース結合コマンドは、ディスクに実在する、任意のデータフォークと任意のリソースフォークを結合させます。ファイル名を指定して結合します。そしてこれは、ひとつひとつ手打ちのコマンドでもできますし、シェルスクリプトに複数のコマンドを書けば一括で処理できます。また、シェルスクリプトは変数と繰り返し制御(forやforeach)があるので、ファイル名に数字が付いていれば順番に処理できます。

ですから、お答えのように(一部変更)

テスト1.src (←テスト.src)

PSEPS001

PSEPS002

テスト3.src

PSEPS003

の結合は、規則的なファイル名が付いているので、できると思います。

ResMerger -srcIs DF -dstIs RSRC テスト1.src -o PSEPS001

ResMerger -srcIs DF -dstIs RSRC テスト2.src -o PSEPS002

ResMerger -srcIs DF -dstIs RSRC テスト3.src -o PSEPS003

#!/bin/sh

i=1

while [ $i -le 123 ]; do

hoe datafile$i >result$i

i=`expr $i + 1`

done

これがMacOSXのシェルの、数字の繰り返しです。

${i}を1としたいとき、001としたいときは、そういうコマンドがあるかどうか知りませんが、多めに0を置いて、後ろの3桁だけ拾えば、できます。

`echo 00000000${i} | sed ”s/^.*¥(...¥)$/¥1/”

途中の.の数が、桁数です。

あわせると、こんな感じです。

#!/bin/sh

i=1

while [ $i -le 6 ]; do

#ResMerger -srcIs DF -dstIs RSRC test${i}.src -o PSEPS`echo 00000000${i} | sed ”s/^.*¥(......¥)$/¥1/”`

echo ${i}

echo `echo 00000000${i}|sed ”s/^.*¥(......¥)$/¥1/”`

i=`expr $i + 1`

done

id:telme

年末の慌ただしい時にご回答頂き、感謝しております。

テスト1.src (←テスト.src)

PSEPS001

PSEPS002

テスト3.src

PSEPS003

再度確認なのですが、上の例でいくとPSEPS002にはリソースがないわけですが、疑問点は自動処理した場合、テスト3.srcのリソースを結合してしまわないのかということです。

例としてファイル名はデータ=PSEPS001/リソース=テスト1.srcとなっていますが、実際には一般的な通し番号などないファイルネームですし、Uneraseで認識されるデータ名もすべて通し番号になっているわけではありません。また、EPSだけではなく、違う種類のファイルも混ざってきます。(これはUneraseでフィルタリングすることで解決できるかもしれませんが)

また、UNIXについては初心者で恐らくDeveloperToolsで任意のデータとリソースを結合するくらいのことはできますが、シェルスクリプトで自動処理を行わせるほどの知識はありません。しかし、可能であれば勉強してトライしたいと思います。その点踏まえまして、回答頂ければ幸いです。

2004/12/31 16:19:19

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません