2017-02-27 99 views
0

我試圖使用this後的代碼。在Windows 10上使用PowerShell播放視頻

當我在PowerShell終端上直接使用此代碼時,它正常運行。

Add-Type -AssemblyName presentationCore 
$filepath = "C:\Temp\test\Wildlife.wmv" 
$wmplayer = New-Object System.Windows.Media.MediaPlayer 
$wmplayer.Open($filepath) 
Start-Sleep 2 
$duration = $wmplayer.NaturalDuration.TimeSpan.Seconds 
$wmplayer.Close() 

start playing 
$proc = Start-process -FilePath wmplayer.exe -ArgumentList $filepath -PassThru 

但是,當我運行.bat文件的代碼,會出現一個cmd窗口,並在幾秒鐘內,沒有采取進一步行動消失。

如果我運行CMD .bat文件,這個錯誤出現:

enter image description here

代碼插入.bat文件是:

Add-Type -AssemblyName presentationCore 
$filepath = [uri] "C:\Users\??????\Desktop\small.mp4" 
$wmplayer = New-Object System.Windows.Media.MediaPlayer 
$wmplayer.Open($filepath) 
Start-Sleep 2 # This allows the $wmplayer time to load the audio file 
$duration = $wmplayer.NaturalDuration.TimeSpan.TotalSeconds 
$wmplayer.Play() 
Start-Sleep $duration 
$wmplayer.Stop() 
$wmplayer.Close() 

我會最想感謝你可以幫助我解決這個問題。

謝謝。

+0

你是什麼意思「插入代碼」?此外,你的「開始玩」線可能意味着在開始時會有一個#號。 –

+0

我已經修改了帖子,我指的是一個.bat文件 –

+0

也許是由於執行策略?在PowerShell窗口中運行get-executionpolicy並共享結果 –

回答

0

您試圖在.bat文件中運行PowerShell命令(因此PowerShell引擎未被用於執行代碼,因此命令失敗)。

您需要的腳本保存爲一個名爲.ps1文件,然後在命令行執行它或者通過它的完整路徑,或者通過改變到腳本存在並進入該目錄:

.\scriptname.ps1 

其中scriptname是您保存文件的名稱。

如果你想通過一個.bat文件來執行腳本,你仍然需要將其保存爲一個名爲.ps1,然後創建一個包含以下內容的.bat文件:

Powershell.exe -File C:\path\to\my\script\myscript.ps1 

顯然修正路徑因此。請注意,以這種方式運行腳本沒有任何優勢,但您可能使用.bat文件的一個原因是,如果您需要更改執行策略以允許腳本執行(我認爲您不這樣做),如下所示:

Powershell.exe -executionpolicy unrestricted -File C:\path\to\my\script\myscript.ps1 
+0

我想通過.bat使用這段代碼,因爲我打算在CD中使用自動運行系統來執行這個PowerShell代碼。 –

+0

所以你只需要在CD上創建一個.ps1腳本,並通過autorun.bat文件調用它,如上所述。 –