我是脚本(或任何形式的编码(的全新。我遇到了一个问题,我想将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解析为一个字符串。