繁体   English   中英

Powershell错误的文件长度结果

[英]powershell wrong results for file length

我有一个长度为309247字节的文件,如下图所示: 在此处输入图片说明

如果我运行此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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM