javascriptでのファイル移動

[3728]javascriptでのファイル移動 | 投稿者:ezi | 投稿日:2009/10/24(Sat) 11:34:07
InDesign CS2 MACでの質問です。
javascriptでファイルを一つ上の階層等へ移動する際、
以下のようにしても、falseを返してしまいます。

=====================
var fileName = File.openDialog("renameTEST");
fileObj = new File(fileName);
alert(fileObj.rename("../renameFile.txt"));
=====================

Windowsだとこれで上手く行くのですが
何故かMACだと移動先に相対パスや絶対パスが使えません。

どのようにしてファイルを移動すれば良いのでしょうか?
(コピーして削除は時間が掛かるので避けたいです)

何か良い方法は有りませんか?教えて下さい。
» 1
[3729]Re: javascriptでのファイル移動 | 投稿者:PICTRIX | 投稿日:2009/10/24(Sat) 15:31:19
こんにちは。

詳しくないんですが、rename( newName )は、パスを含まない名前らしいです。
以下コピペ
rename()
fileObj.rename (newName)
newName The new file name, with no path.
Renames the associated file. Does not resolve aliases, but renames the referenced alias or shortcut
file itself.

ひょっとして、changePath() を使うのかも。
関係なかったらごめんちゃい。
(以上Tools Guide CS3.pdfを見ての事ですが)
» 2
[3733]Re: javascriptでのファイル移動 | 投稿者:ezi | 投稿日:2009/10/26(Mon) 12:04:42
PICTRIXさん
有難う御座います。
>>詳しくないんですが、rename( newName )は、パスを含まない名前らしいです。

renameでパスが使えないんですね(泣)。

>>ひょっとして、changePath() を使うのかも。

changePath()調べてみたんですが、
結局よく使い方が解かりません^^;

んー、
ファイル移動の方法が無いとは思えないんですが
MACなんでScripting.FileSystemObjectを
インスタンスする訳にもいきませんし…。

行き詰まってますです。
» 3
[3734]Re: javascriptでのファイル移動 | 投稿者:せうぞー | 投稿日:2009/10/26(Mon) 13:46:09
PICTRIXさんがおっしゃるように、おそらくrenameメソッドはパスを変更するものではないと思います。winで動作しているとしたらそれはたまたまかと。
changePathメソッドは内部的に保持するパス名を変えるものだと思います。つまりそれをファイルシステムに反映できません。

>ファイル移動の方法が無いとは思えないんですが
JSでできないことはたくさんあります。
MacならUnixレイヤーをキックするのがよいかもしれません。
以下サンプル:

function run_command(my_command) {
   if (Folder.fs == "Macintosh") {
       my_command = 'do shell script "' + my_command + '"';
       return app.doScript (my_command, ScriptLanguage.APPLESCRIPT_LANGUAGE);
   }
}

var fileName = File.openDialog("renameTEST");
var org_fullpath = fileName.fsName;//
fileName.changePath ("../../renameFile.txt");//相対パスの書き方がおかしい。バグ?
var new_fullpath = fileName.fsName;

if (Folder.fs === "Macintosh") {
   run_command("mv '" + org_fullpath + "' '" + new_fullpath + "'");
}

(追記:2009-10-26T18:57:10+0900)ちょっとサンプル書き直しました。
» 4
[3735]Re: javascriptでのファイル移動 | 投稿者:せうぞー | 投稿日:2009/10/26(Mon) 13:51:07
あ、そうだ。書き忘れ。
あたりまえのことですが、Unixレイヤーを叩くので日本語ファイル名は使えません。
nkfとかを挟めば解決するかもしれませんが... それとてOSとアプリケーションのバージョンによって対処が違うはず。
以下略(w
» 5
[3736]Re: javascriptでのファイル移動 | 投稿者:PICTRIX | 投稿日:2009/10/26(Mon) 15:37:38
せうぞーさん、フォロー感謝! です。^^
» 6
[3738]Re: javascriptでのファイル移動 | 投稿者:こに | 投稿日:2009/10/27(Tue) 11:41:19
>>ひょっとして、changePath() を使うのかも。
CS2のスクリプトリファレンスとCS3のJavaScript Tool Guideを見比べてみましたが、
changePath()が使えるのはCS3からでは?(CS2のリファレンスには記述がありませんでした)
せうぞーさんのサンプルスクリプトもCS2ではchangePath is not a functionと言われます。
CS2で運用するのでしたらコピーして削除するか、せうぞーさんのサンプルのようにUnixレイヤーをキックする方法になるのでは?
» 7
[3748]Re: javascriptでのファイル移動 | 投稿者:ezi | 投稿日:2009/10/27(Tue) 17:42:01
PICTRIXさん
せうぞーさん
こにさん
有難う御座います。

Unixレイヤーを呼び出す方法を試してみました。
サンプルまで解かりやすく書いて頂いたおかげで、
何とかファイルの移動が出来るようになりました。
しかし、色々四苦八苦した結果、おっしゃってた通り、
bashさんに上手いこと日本語ファイル名が通らないみたいです…。

後の望みはAppleScriptを呼び出す方法でしょうか…。
せうぞーさんのブログを覗かせてもらい、試してみようかと思います。

もう少しもがいてみます。最悪、コピー後削除も視野に(泣)
いつもながら皆さんの知識が羨ましい限りです。
頭がさがりますです。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア