我有点像一个Powershell新手,我已经有意识地将PS作为我的主要脚本语言使用了大约6个月。
我试图生成一个基本脚本,只使用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
}我遇到了很多问题,我觉得解决方案很简单。
谢谢你的帮助。
发布于 2013-11-18 12:09:41
Start-Process具有重定向STDIN、STDOUT和STDERR的参数,因此尝试如下:
Start-Process $mediainfo $file.FullName -NoNewWindow -Wait `
-RedirectStandardOutput "$outdir\$($file.Name).txt"不过,通常您会使用call operator (&)启动外部程序,这应该允许您使用常规输出流:
& $mediainfo $file.FullName | Out-File "$outdir\$($file.Name).txt"如果程序没有写入成功输出流(STDOUT),您可以像这样重定向其他流(详见重定向 ):
& $mediainfo $file.FullName *>&1 | Out-File "$outdir\$($file.Name).txt"发布于 2016-09-15 01:52:31
我已经为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://stackoverflow.com/questions/20046147
复制相似问题