iT邦幫忙

0

Shell Script 轉 Powershell

小弟是新手對Powershell不是很熟
有一個Shell Script在ubuntu上運行的很順利

#!/bin/bash
# this script will run until someone kills it
echo PID="$PID"
while true ; do
    startDateTime=$(/bin/date +%Y-%m-%d.%H%M)
    echo "starting ffmpeg at ${startDateTime}"
    ffmpeg -i "http://clientportal.link:8080/live/tmalik/Tanveer/9026.m3u8" -c copy abc."${startDateTime}".ts -y
    # sleep 0.5
done

想請問高手們在win10下的Powershell我該如何修改呢
謝謝

LKK iT邦大師 8 級 ‧ 2017-12-08 08:40:45 檢舉
先手動執行看看ffmpeg在win10執行的狀況,沒問題再繼續。
0
froce
iT邦新手 3 級 ‧ 2017-12-08 09:29:47
最佳解答

我的想法同raytracy,你該先自己寫,我是為了練功才幫你寫。
該改的自己改。

echo "此程序之PID為:"
echo $pid
echo "如要結束程式,請自行kill"



while ($true){
    $startDateTime = Get-Date
    echo "starting ffmpeg at $startDateTime"
    $output_filename = "abc." + $startDateTime.tostring("yyyyMMddHHmmss") + ".ts"

    $arg1 = "-i E:\\video_convert\\ffmpeg\\input\\00002.mp4"
    $arg2 = "-c copy"
    $arg3 = "-y"
    
    Start-Process -FilePath "E:\\video_convert\\ffmpeg\\ffmpeg.exe" -ArgumentList ($arg1, $arg2, $output_filename, $arg3)
}
chmadux8 iT邦新手 5 級 ‧ 2017-12-08 09:37:46 檢舉

感謝提供參考的語法
晚上有電腦可用時我會來修改自己要的部分
再次感謝大家不吝賜教

chmadux8 iT邦新手 5 級 ‧ 2017-12-08 21:32:31 檢舉

我下載直播串流時會遇到兩個問題
1.會同時開啟無限個下載直播串流導致系統當機
2.文件的命名時間日期和$arg那邊會有問題會導致錯誤
後來我把ffmpeg加入win10的系統環境變數裡
然後命名時間日期和$arg那邊簡化為原本ffmpeg直接的命令格式就成功有達到我原來Shell Script的效果

echo "此程序之PID為:"
echo $pid
echo "如要結束程式,請自行kill"
while ($true){
    $startDateTime = Get-Date
    echo "starting ffmpeg at $startDateTime"
    $output_filename = "abc." + $startDateTime.tostring("yyyyMMddHHmmss") + ".ts"
    ffmpeg -i "http://clientportal.link:8080/live/tmalik/Tanveer/9026.m3u8" -c copy "${output_filename}" -y
}

再次感謝你提供powershell的範本讓我有了方向
更進階的用法我會去看raytracy推薦的資料來學習
再次謝謝這麼多人熱心提供很多意見

5
raytracy
iT邦大神 1 級 ‧ 2017-12-08 00:23:45

先寫一段你認為應該正確的 PowerShell, 才會有人幫你改....否則, 就算有人幫你寫了, 拿回去不能執行的話, 你還是不知該如何除錯...

如果連 PowerShell 的語法都不熟悉的話, 可以先看看這些:
PowerShell in Depth: An Administrator’s Guide

Windows Powershell in Action

話雖不錯
不過可能會被按「沒有幫助」
/images/emoticon/emoticon39.gif

chmadux8 iT邦新手 5 級 ‧ 2017-12-08 09:33:17 檢舉

raytracy能提出學習的參考書還是有幫助的
我會去找來研究看看的
因為shell script我也是剛接觸沒多久
才會來這邊問問

0
饅頭
iT邦新手 5 級 ‧ 2017-12-08 09:05:30

是只要做到跑那個腳本就可以了嗎??
這樣的話 可以裝git (搜尋git 安裝)
就可以在 git bash 裡面跑 shell script 喔!!

chmadux8 iT邦新手 5 級 ‧ 2017-12-08 09:35:27 檢舉

你的變通方式應該是行得通
但我應該還是要學習powershell日後有用到時就不用到處求人了
感謝你提供的小技巧

饅頭 iT邦新手 5 級 ‧ 2017-12-08 14:12:59 檢舉

看有沒有實際需要用 powershell
因為我在 windows10 用git 用得很開心XD
看上面的回覆你是剛學 shell
加油!!

chmadux8 iT邦新手 5 級 ‧ 2017-12-08 21:30:10 檢舉

你的方法有成功可以無縫接軌
但這次我把最佳解答投給froce感謝他提供範本
讓我powershell下也可以達到類似的效果
還是很感謝你提供小技巧原來也可以用這樣的方式執行

我要發表回答

立即登入回答