2017-02-27 65 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

「コードを挿入する」とはどういう意味ですか?また、あなたの "start playing"行は、おそらく最初に#を持つことを意図しています。 –

+0

私はすでに投稿を修正しました。私は.batファイルを参照していました –

+0

おそらく実行ポリシーのためですか? PowerShellウィンドウでget-executionpolicyを実行し、結果を共有する –

答えて

0

PowerShellコマンドを.batファイル内で実行しようとしています。その結果、PowerShellエンジンはコードの実行に使用されていないため、コマンドは失敗します。

.\scriptname.ps1 

:あなたは、コマンドラインのいずれかから、それは完全なパス名ですまたはスクリプトが存在するディレクトリと入る変更することにより、経由で実行し、.ps1というファイルとしてスクリプトを保存する必要が

ここで、scriptnameはファイルを保存した名前です。明らかに

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

パスを修正する:あなたは.BATファイルを経由してスクリプトを実行したい場合は

は、あなたはまだの.ps1として保存して、次の内容の.BATファイルを作成する必要がありますそれに応じて。この方法でスクリプトを実行する利点はありませんが、.batファイルを使用する理由の1つは、スクリプト実行を許可するように実行ポリシーを変更する必要がある場合です(私はあなたの場合はそうは思わない)

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

このコードを.batで使用したいのですが、このPowerShellコードをCDの自動実行システムで実行しようとしています。 –

+0

それでは、上記のように、スクリプトを.ps1としてCDに作成し、autorun.batファイルから呼び出すだけです。 –

関連する問題