在Google的帮助下,我为Handbrake自动化制作了一个Powershell脚本。
它的作用:
问题在于最后一项。当源文件夹为空时,Powershell脚本退出,但我希望它在到达时继续运行并处理更多文件,直到我将其删除。添加新文件时,它应自动开始编码。
代码位于PasteBin,其中包含更多注释,但应该很容易推断脚本的功能:
$inputpath = "I:\S"
$outputpath = "I:\E"
$movies = ls $inputpath
foreach($movie in $movies){
$name = $movie.basename
if(!(test-path -path "$outputpath\$name.mkv")){
C:\"Program Files"\handbrake\HandBrakeCLI.exe -i "$inputpath\$movie" -o "$outputpath\$name.mkv" `
-e x264 -b 1000 -2 -T -a 1,1 -E mp3 -B 112 --mixdown stereo -f mkv --detelecine --decomb `
--loose-anamorphic -m -x rc-lookahead=30:ref=4:bframes=3:me=umh:subme=9:analyse=none:deblock=1:0:0:8x8dct=1
}
}
答案 0 :(得分:1)
在您的评论中,您描述了System.IO.FileSystemWatcher
和Register-ObjectEvent
将用作文件观察程序。直到现在都没玩过它,但这里有你想要的样本。
$inputpath = "I:\S"
$outputpath = "I:\E"
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $searchPath
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
$created = Register-ObjectEvent $watcher "Created" -Action {
$name = $eventArgs.basename
if(!(test-path -path "$outputpath\$name.mkv")){
C:\"Program Files"\handbrake\HandBrakeCLI.exe -i "$($eventArgs.FullName)" -o "$outputpath\$name.mkv" `
-e x264 -b 1000 -2 -T -a 1,1 -E mp3 -B 112 --mixdown stereo -f mkv --detelecine --decomb `
--loose-anamorphic -m -x rc-lookahead=30:ref=4:bframes=3:me=umh:subme=9:analyse=none:deblock=1:0:0:8x8dct=1
}
}
基于论坛帖here。搜索System.IO.FileSystemWatcher
和Register-ObjectEvent
可能会为您提供更多背景信息。此外,您可能需要检查手刹代码,因为它在您的pastebin中看起来不对,我试图改进它以提高可读性。