将文件名分类超过256个字符



我是脚本(或任何形式的编码(的全新。我遇到了一个问题,我想将CSV文件生成目录目录和某些文件名来帮助我的工作。我能够将一些适合我需要的东西放在一起。除一个例外,长名称返回以下错误:

错误:指定的路径,文件名或两者都太长。完全合格的文件名必须小于260个字符,目录名称必须小于248个字符。

这是我的脚本:

Write-Host "Andy's File Lister v2.2"
$drive = Read-Host "R or Q?"
$client = Read-Host "What is the client's name as it appears on the R or Q drive?"
$path= "${drive}:${client}"
Get-ChildItem $path -Recurse -dir | Select-Object FullName | Export-CSV $homedownloads"$client directories.csv"
Get-ChildItem $path -Recurse -Include *.pdf, *.jp*, *.xl*, *.doc* | Select-Object FullName | Export-CSV $homedownloads"$client files.csv"
Write-Host "Check your downloads folder."
Pause

正如我所说的,我对此很崭新。我可以使用不同的命令,或者一种告诉脚本以一定长度跳过目录名称或文件的方法?

谢谢!

您可以检查您检查的每个项目的.fullname属性的长度属性的值,如果它大于256个字符,请使用外部:

ex。

$items = Get-ChildItem -Path C:usersmyusernamedesktopmyfolder
foreach($item in $items)
{
     if($item.FullName.Length -lt 256)
     {
          do some stuff
     }
     elseif($item.FullName.Length)
     {
          Out-Null
     }
}

如果您也想检查父文件夹的路径,则可以检查

$item.Parent.FullName.Length

也在您的处理中。

我认为您应该在第5行上关闭字符串。

您应该使用",而不是使用",因为当前您的脚本将整个行6解析为一个字符串。

最新更新