获取元数据字段的 Powershell 脚本 "writing application"
Powershell script to get the metadata field "writing application"
我正在使用最初由 Microsoft 的 Ed Wilson 编写的 GetMetaData 脚本的修改版本 (https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-find-files-metadata/) and then modified by user wOxxOm here 。我正在尝试分析我所有的 DVD 和 BluRay rips,看看使用什么工具创建它们.主要是想看看哪些是我用Handbrake压缩的,哪些是直接从MakeMKV来的,问题是找不到这个字段
如果我使用“stock”scrip 并将其查找的属性数量从 0 - 266 更改为 0 - 330,我会找到额外的文件信息,如电影长度、分辨率等。但我做不到找到使用的工具。例如,这里是 MediaInfo Lite 工具报告的内容:
但是通过元数据我得到了这样的东西,没有“写作应用程序”属性:
Name : Ad Astra (2019).mkv
Size : 44.1 GB
Title : Ad Astra
Length : 02:03:02
Frame height : 2160
Frame rate : 23.98 frames/second
Frame width : 3840
Total bitrate : 51415kbps
Audio tracks : TrueHD S24 7.1 [Eng]
Contains chapters : Yes
Subtitle tracks : PGS [Eng], PGS [Eng]
Video tracks : HEVC (H265 Main 10 @L5.1)
我如何找到那个 属性 或者它不是我可以通过 PowerShell 提取的东西?
编辑:我正在寻找的信息是在 Windows Explorer 中查看文件的属性和详细信息选项卡,因此如果 Explorer 可以看到它,我认为我应该能够:
edit:其实这样看起来更靠谱。到目前为止,mediainfo 可以读取的任何文件,这也适用。
$FILE = "C:\test.mkv"
$content = (Get-Content -Path $FILE -First 100) + (Get-Content -Path $FILE -Tail 100)
if(($content -match '\*data')[0] -match '\*data\W*([\w\n\s\.]*)'){
write-host "Writing Application:" $Matches[1]
exit
}elseif(($content -match 'M€.*WA(.*)s¤')[0] -match 'M€.*WA(.*)s¤'){
write-host "Writing Application:" $Matches[1]
}
看起来文件中 *data 之后的最后一个字节指定了作者,所以试试这个:
(Get-Content -Path "c:\video.mkv" -Tail 1) -match '\*data\W*(.*)$' | out-null
write-host "Writing Application:" $Matches[1]
在我的测试文件中生成“HandBrake 1.5.1 2022011000”
抱歉,我不确定是哪个标准指定的。文件中的第一行数据也有很多有用的信息,例如:
ftypmp42 mp42iso2avc1mp41 free6dÊmdat ôÿÿðÜEé½æÙH·–,Ø Ù#îïx264 - core 164 r3065 ae03d92 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadz
one=21,11 fast_pskip=1 chroma_qp_offset=0 threads=18 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin
=0 qpmax=69 qpstep=4 vbv_maxrate=14000 vbv_bufsize=14000 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
我无法复制您使用 Windows 资源管理器查看信息的成功,该字段对我来说是不可见的,即使我可以使用 MediaInfo 等查看它
我正在使用最初由 Microsoft 的 Ed Wilson 编写的 GetMetaData 脚本的修改版本 (https://devblogs.microsoft.com/scripting/hey-scripting-guy-how-can-i-find-files-metadata/) and then modified by user wOxxOm here
如果我使用“stock”scrip 并将其查找的属性数量从 0 - 266 更改为 0 - 330,我会找到额外的文件信息,如电影长度、分辨率等。但我做不到找到使用的工具。例如,这里是 MediaInfo Lite 工具报告的内容:
但是通过元数据我得到了这样的东西,没有“写作应用程序”属性:
Name : Ad Astra (2019).mkv
Size : 44.1 GB
Title : Ad Astra
Length : 02:03:02
Frame height : 2160
Frame rate : 23.98 frames/second
Frame width : 3840
Total bitrate : 51415kbps
Audio tracks : TrueHD S24 7.1 [Eng]
Contains chapters : Yes
Subtitle tracks : PGS [Eng], PGS [Eng]
Video tracks : HEVC (H265 Main 10 @L5.1)
我如何找到那个 属性 或者它不是我可以通过 PowerShell 提取的东西?
编辑:我正在寻找的信息是在 Windows Explorer 中查看文件的属性和详细信息选项卡,因此如果 Explorer 可以看到它,我认为我应该能够:
edit:其实这样看起来更靠谱。到目前为止,mediainfo 可以读取的任何文件,这也适用。
$FILE = "C:\test.mkv"
$content = (Get-Content -Path $FILE -First 100) + (Get-Content -Path $FILE -Tail 100)
if(($content -match '\*data')[0] -match '\*data\W*([\w\n\s\.]*)'){
write-host "Writing Application:" $Matches[1]
exit
}elseif(($content -match 'M€.*WA(.*)s¤')[0] -match 'M€.*WA(.*)s¤'){
write-host "Writing Application:" $Matches[1]
}
看起来文件中 *data 之后的最后一个字节指定了作者,所以试试这个:
(Get-Content -Path "c:\video.mkv" -Tail 1) -match '\*data\W*(.*)$' | out-null
write-host "Writing Application:" $Matches[1]
在我的测试文件中生成“HandBrake 1.5.1 2022011000”
抱歉,我不确定是哪个标准指定的。文件中的第一行数据也有很多有用的信息,例如:
ftypmp42 mp42iso2avc1mp41 free6dÊmdat ôÿÿðÜEé½æÙH·–,Ø Ù#îïx264 - core 164 r3065 ae03d92 - H.264/MPEG-4 AVC codec - Copyleft 2003-2021 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadz one=21,11 fast_pskip=1 chroma_qp_offset=0 threads=18 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf mbtree=1 crf=23.0 qcomp=0.60 qpmin =0 qpmax=69 qpstep=4 vbv_maxrate=14000 vbv_bufsize=14000 crf_max=0.0 nal_hrd=none filler=0 ip_ratio=1.40 aq=1:1.00
我无法复制您使用 Windows 资源管理器查看信息的成功,该字段对我来说是不可见的,即使我可以使用 MediaInfo 等查看它