2017-03-17 8 views
0

ffmpegコマンドで2つのビデオファイルをマージするために使用できるテキストファイルを作成しようとしています。私が抱えている問題は、自分のフォルダ/ファイルパスを私が望むように見せかけることです。私の問題を引き起こすの2行は、次のとおりです。AppleScriptパスをposixパスにしてシェルスクリプトに渡すにはどうすればいいですか?

set theFile to path to replay_folder & "ls.txt"

私は単にこのパスは、私は同じことをしたいシェルスクリプトラインでreplay_folderls.txt

のパスになりたいです。

do shell script "cd " & replay_folder & " /usr/local/bin/ffmpeg -f concat -i ls.txt -c copy merged.mov"

私はシェルスクリプトMacintosh HD:Users:BjornFroberg:Documents:wirecast:Replay-2017-03-17-12_11-1489749062:

でこのパスを取得しかし、私はこの/Users/BjornFroberg/Documents/wirecast/Replay-2017-03-17-12_11-1489749062/

完全なコードがあるとします

tell application "Finder" 
set sorted_list to sort folders of folder ("Macintosh HD:Users:bjornfroberg:documents:wirecast:") by creation date 
set replay_folder to item -1 of sorted_list 
set replay_files to sort items of replay_folder by creation date 
end tell 

set nr4 to "file '" & name of item -4 of replay_files & "'" 
set nr3 to "file '" & name of item -3 of replay_files & "'" 

set theText to nr4 & return & nr3 

set overwriteExistingContent to true 

set theFile to path to replay_folder & "ls.txt" --actual path is: POSIX file "/Users/BjornFroberg/Documents/wirecast/Replay-2017-03-17-12_11-1489749062/ls.txt" 

set theOpenedFile to open for access file theFile with write permission 

if overwriteExistingContent is true then set eof of theOpenedFile to 0 

write theText to theOpenedFile starting at eof 

close access theOpenedFile 

do shell script "cd " & replay_folder & " 
/usr/local/bin/ffmpeg -f concat -i ls.txt -c copy merged.mov" 

すべてのヘルプは高く評価され:)

答えて

1

path to標準スクリプティング機能追加の一部であり、事前に定義されたフォルダでのみ動作します。カスタムパスでは機能しません。例えば"Macintosh HD:Users:bjornfroberg:documents:"は、現在のユーザーのドキュメントフォルダに常に指す相対パス

set documentsFolder to path to documents folder as text 

に置き換えることができます。


replay_folderができるファインダーオブジェクト指定子である - この特定の形で - のみファインダーこと取り扱うこと。 (コロン区切り)HFSパスを作成するにはあなたがPOSIXパスを(スラッシュ区切り)を使用する必要がシェルにreplay_folderを渡すことが

set theFile to (replay_folder as text) & "ls.txt" 

をテキストにファインダー指定子を強制する必要があります。ファインダ指定子はPOSIX pathに直接強制変換できないため、最初にHFS pathを作成する必要があります。さらに、パス内でスペース文字がエスケープされるように注意する必要があります。エスケープされていないスペース文字は、シェルスクリプトを壊すでしょう

set replay_folderPOSIX to POSIX path of (replay_folder as text) 
do shell script "cd " & quoted form of replay_folderPOSIX & " 
/usr/local/bin/ffmpeg -f concat -i ls.txt -c copy merged.mov" 
+0

これは完璧に機能しました。ありがとうございました! HFSは何を表していますか? –

+0

[階層ファイルシステム](https://en.wikipedia.org/wiki/Hierarchical_File_System) – vadian

1

あなたはこのようなPOSIXパスにAppleScriptのパスに変換することができます:

set applescriptPath to "Macintosh HD:Users:bjornfroberg:documents:wirecast:" 

set posixPath to (the POSIX path of applescriptPath) 

log posixPath 

戻り/Users/bjornfroberg/documents/wirecast/

注:あなたの投稿のタイトルとあなたの実際の質問には、種類の異なるトピックです。あなたの目標は、AppleScriptパス(Macintosh HD:Users:bjornfroberg:documents:wirecast)をファイル名を追加するposixパス(/Users/bjornfroberg/documents/wirecast/)にすることです。

set theFile to POSIX path of (replay_folder as text) & "ls.txt" 

あなたがあなたのパスを定義したら、何をしようとしてによっては、POSIXに変換する必要があるかもしれません:あなたは完全なパスを構築するために既存のコードと一緒に上記のコードを使用することができますファイルをAppleScript経由で操作します。たとえば、あなたはAppleScriptを介して、それを開きたい場合:

set pFile to POSIX file theFile 

tell application "Finder" to open pFile 

POSIX path in applescript from list not opening. Raw path worksを参照)

+0

あなたは正しいです。投稿のタイトルを変更しました。 –

関連する問題