[英]powershell wrong results for file length
如果我运行此powershell脚本:
(Get-Item 'C:\TestFile.082').length
309247
但是,如果运行相同的脚本但使用$file
变量,则返回以下内容:
$fpath = Get-Item $file.FullName
$fpath.length
309800
# or
(Get-Item $file.FullName).length
309800
# or
$file.length
309800
注意 $ file是目录中包含的所有文件的循环变量
为什么如果我引用同一个文件,结果却不同?
如何获得真实价值(309247)?
这是我的完整代码
$filesToFtp = Get-Item $pathToFtp -Exclude "*.PreARM"
foreach($file in $filesToFtp)
{
$fpath = Get-Item $file.FullName
$fpath.Length
$FileNode = $oXMLDocumentFiles.CreateElement("element","curtmpremotelxml_files","")
$nodoXML = "<versionnum>"+$versplain+"</versionnum>"+
"<filename>"+$file.Name.ToUpper()+"</filename>"+
"<filesize>"+$file.length+".00</filesize>"+
$FileNode.InnerXml = $nodoXML
$oXMLDocumentFiles.DocumentElement.AppendChild($FileNode)
}
看起来您没有使用您认为自己在使用的cmdlet:
foreach( $file in (Get-Item 'c:\')) { ($file.FullName).Length }
是变量的精简版本,以填充$ fPath,但它返回的是System.IO.FileSystemInfo对象,其中有一个名为FullPath的成员,它是一个字符串。
我想你想要什么
foreach( $file in (Get-ChildItem 'c:\')) { ($file.FullName).Length }
这将返回子项(或文件夹中的文件)的文件路径数组
这也可以让您整理一些东西
$currentFilePath = $file.FullName
$fLength = $currentFilePath.Length
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.