0

私はやや Powershell 初心者ですが、約 6 か月間、PS をメインのスクリプト言語として意図的に使用しています。

powershell と mediainfo のみを使用して、ディレクトリ内のファイル (入力) から個々の .txt ファイルの別のディレクトリ (出力) への詳細を解析する基本的なスクリプトを生成しようとしています (元のファイル拡張子を削除するのが理想的です)。

ソースと出力のファイル名は同じである必要があります (例: test.mp4 -> test.txt. これが私がこれまでに管理したものです:

$indir = "C:\Temp\input"
$outdir = "C:\Temp\output\"
$mediainfo = "C:\Temp\MediaInfo_CLI_x64\MediaInfo.exe "

$files = Get-ChildItem $indir

foreach ($file in $files )
    {
    Write-Host "Scanning " $file.FullName
    Start-Process $mediainfo $file.FullName -NoNewWindow | out-file $outdir $file.Name
    }

私は多くの問題に直面していますが、解決策は非常に簡単だと思います。

ご協力ありがとうございます。

4

2 に答える 2

2

MediaInfo の DLL ラッパーをコンパイルしたので、このように PowerShell で使用できます。

add-type -path 'C:\Users\username\Documents\WindowsPowerShell\vise_mediainfo.dll'
$MediaInfo = New-Object VISE_MediaInfo.MediaInfo
#Display all codec info about this PC
$MediaInfo.Option("Info_Codecs")
#Display information about a specific file
$MediaInfo.Open('C:\Users\username\Videos\video_name.mp4')
$MediaInfo.Inform()

https://ianmorrish.wordpress.com/v-ise/mediainfo/からダウンロード

于 2016-09-15T01:52:31.203 に答える
1

Start-ProcessSTDIN、STDOUT、および STDERR をリダイレクトするためのパラメータがあるので、これを試してください。

Start-Process $mediainfo $file.FullName -NoNewWindow -Wait `
    -RedirectStandardOutput "$outdir\$($file.Name).txt"

通常、呼び出し演算子 ( ) を使用して外部プログラムを起動します&が、これにより、通常の出力ストリームを使用できるようになります。

& $mediainfo $file.FullName | Out-File "$outdir\$($file.Name).txt"

プログラムが成功出力ストリーム (STDOUT) に書き込まない場合は、次のように他のストリームをリダイレクトできます (詳細については、 about_Redirectionを参照してください)。

& $mediainfo $file.FullName *>&1 | Out-File "$outdir\$($file.Name).txt"
于 2013-11-18T12:09:41.270 に答える