みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Macでスクリプトでターミナルに入力したいのですが、うまくできません。計算されたスクリプトの実行に関する情報も少なく困ってます。どなたかお助けください。FMP18です。
計算結果がコマンドと一致するように指定します。
Appleの解説
https://support.apple.com/ja-jp/guide/t … aab4bc/mac
"tell application \"Terminal\"¶
activate¶
set destF to POSIX file of \"/Volumes/GoogleDrive/共有ドライブ/???????/test.txt\"¶
do script \"echo Hellow\" > destF¶
end tell"
test.txtを書き換えたいのです
うまくいきません。
よろしくお願いします。
apple scriptの計算されたスクリプトで行ってます。フィールドの値でテキスト内容を書き換えたいのです。
テストする環境がないので推測ですが、それをApplescriptのスクリプトエディタで入力して動きますか?
do script の行がおかしいような。> destF まで含めてスクリプトですよね?
フィールド値がどこにも出てきませんが、それの前段階の実験中ですか?
FM18ならデータファイルスクリプトで直接読み書きできますが。。。ファイルの一部の書き換えですか?
do shell script
では
Offline
himadaneeさんの指摘のとおりと思います。
3行目でdestFにリダイレクト先を代入していますが、
do script "実行されるコマンド > リダイレクト先のパス"
なので、destFはターミナルに渡せていません。
Last edited by koeda (2020-05-05 18:24:01)
Offline
先ほどの件はフィールドの書き出しでエラー処理をしたらできました。お騒がせしました。その後ffmpegで動画を結合したいのですが、
ソースファイルと出力ファイルを変数に設定
"tell application \"Terminal\"¶
activate¶
\"echo ffmpeg \" -f concat -i & $destF & $outF¶
end tell
"
activate¶
\"echo ffmpeg -f concat -i & $destF & $outF \"¶
end tell
"
どちらもうまくいきません。
よろしくお願いいたします。
ffmpegコマンドはよく知りませんが…
do scriptが抜けているのでは?
echoは不要では?(実行したいのはechoコマンドではなくffmpegなので)
$destFと$outFの前後にスペースは入っていますか?
Offline
"tell application \"Terminal\"¶
activate¶
do script \"ffmpeg -f concat -i & $destF & $outF\"¶
end tell
"
で動きました
でも
ターミナルに
Missing argument for option 'i'.
Error splitting the argument list: Invalid argument
とでて止まってます。
ソースファイルのリストをファイルメーカーのフィールドの書き出しで作ってるのですが
内容は
file 1A.mp4
file 2A.mp4
file 3A.mp4
file 4A.mp4
file 5B.mp4
とかです
よろしくお願いいたします。
エラーメッセージの前に、実際に実行されたコマンドが出ているはずなので、
まずそれが正しいコマンドになっているか確認してください。
ファイル名のリストに改行が含まれていたりするとダメですよ。
Offline
"tell application \"Terminal\"¶
activate¶
do script \"ffmpeg\ -f\ concat\ -i\ & $inF & \ & $outF\"¶
end tell
"
これでターミナルにエラーは出なくなったけど動画は作成されません。
よろしくお願いいたします。
全体は
ディレクトリの取得 [ $path ]
ディレクトリの取得 [ $out ]
変数を設定 [ $inF; 値:$path & "mixText.txt" ]
変数を設定 [ $outF; 値:$out & edition::edition & ".mp4" ]
エラー処理 [ オン ]
フィールド内容のエクスポート [ edition::mixText; 「$inF」 ]
AppleScript を実行 [ 計算済みの AppleScript: "tell application \"Terminal\"¶ activate¶ do script \"ffmpeg\ -f\ concat\ -i\ & $inF & \ & $outF\"¶ end tell " ]
です。
結合ファイルを指定するテキストファイルmixText.txtを作成。画像結合のコマンドを送信。
したい内容です。
よろしくお願いいたします。
計算結果にFMの変数が含まれてるのがまずいでしょう。変数値にエスケープ必要な文字はないものとして、””の外へ出してみる?
do script \"ffmpeg\ -f\ concat\ -i\ " & $inF & "\ " & $outF "\"¶
演算子を入れてくださいと出ます。
& が1つ抜けてましたね。
do script \"ffmpeg\ -f\ concat\ -i\ " & $inF & "\ " & $outF & "\"¶
https://www.ffmpeg.org/ffmpeg.html#Description-1
を見ましたが、concatとか、-iにテキストファイルを指定するというのが見当たりません。ターミナルで実行できたコマンドはどういうものですか?
ファイル名をフルパス指定してないから、ffmpegの前にcdコマンドを実行しないと動かないのでは?
ググってみると、例えば以下のような紹介記事が見つかります。
https://webnetforce.net/ffmpegde-dong-h … no/#concat
この記事に従えば、結合対象となる複数のファイルをテキストファイルとして渡せるようですが、
記事の例でもファイルはフルパスで指定するのが望ましいとされていますね。
とにかく、
1)まずターミナルでコマンドが実行できるようにする
2)動作が確認できたコマンドをFileMakerで組み立て〜実行できるようにする
という手順で進めるべきかと。
現状では、どこに問題があるのかの切り分けもできませんので。
Last edited by koeda (2020-05-06 10:28:24)
Offline
"tell application \"Terminal\"¶
activate¶
do script \"ffmpeg -f concat -i /Users/hayashi/Desktop/movie_mp4/mixText.txt /Users/hayashi/Desktop/movie_mix/" & edition::edition & ".mp4\"¶
end tell"
で解決しました
しかし
mixText.txtをファイルメーカーのスクリプトのフィールドの書き出しで行うと文字コードなのかエラーが起きてテキストエディターで書き直すとスクリプトが動きます。フィールドの書き出し以外でいい方法ありますか?
"tell application \"Terminal\"¶
activate¶
do script \"echo file 1" & edition::cv1 & ".mp4 > /Users/hayashi/Desktop/movie_mp4/mixText.txt\"¶
end tell"
このような方法でフィールドの値を書き込めましたがターミナルがどんどん開きます。
閉じるにはどうすればいいでしょうか。
delay 0.5¶
close (get window 1)¶
で解決しました。
色々ありがとうございました。
最初にShinさんから指摘がありますが、do shell scriptを使えばターミナルが不要なのでは?
https://developer.apple.com/library/arc … ities.html
文字コードの件は、改行をLFにする必要があるのかな?¶でなくChar(10)
Pages: 1
[ Generated in 0.009 seconds, 11 queries executed - Memory usage: 561.02 KiB (Peak: 581.93 KiB) ]