问题描述
Powershell在使用file.Length命令查询mp4文件时返回不同的文件大小32029227
。
实际文件大小为Get-Item
。
还尝试使用Get-ItemPropertyValue
和***Console***
PS C:\Users\User0\Desktop\kcg_transcode> dir
Directory: C:\Users\User0\Desktop\kcg_transcode
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 19-08-2020 15:59 32029227 Produce.mp4
PS C:\Users\User0\Desktop\kcg_transcode> $pd_output = 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4'.Length
PS C:\Users\User0\Desktop\kcg_transcode> $pd_output
46
PS C:\Users\User0\Desktop\kcg_transcode> $pd_output = (Get-Item 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4').Length
Get-Item : Cannot find path 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4' because it does not exist.
At line:1 char:15
+ ... d_output = (Get-Item 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4' ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\User0\...ert\Produce.mp4:String) [Get-Item],ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.Getitemcommand
PS C:\Users\User0\Desktop\kcg_transcode> Get-ItemPropertyValue 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4' -Name Length
Get-ItemPropertyValue : Cannot find path 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4' because it does not exist.
At line:1 char:1
+ Get-ItemPropertyValue 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4 ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Users\User0\...ert\Produce.mp4:String) [Get-ItemPropertyValue],Microsoft.PowerShell.Commands.GetItemPropertyValueCommand
,但Powershell找不到该文件,即使该文件明确存在。
为什么会有这种差异?
{{1}}
解决方法
Powershell返回字符串值,而不是下面命令中的实际文件大小-
$pd_output = 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4'.Length
在Get-Item和Get-ItemPropertyValue中,缺少-Path标志。提供此标志后,将返回正确的文件大小。
$pd_output = (Get-Item -Path 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4').Length
$pd_output = Get-ItemPropertyValue -Path 'C:\Users\User0\Desktop\kcg_convert\Produce.mp4' -Name Length