我目前正在使用此脚本从给定路径中提取名称、文件夹、文件夹名称:
Get-ChildItem "C:\user\desktop" | Select Name, `
@{ n = 'Folder'; e = { Convert-Path $_.PSParentPath } }, `
@{ n = 'Foldername'; e = { ($_.PSPath -split '[\\]')[-2] } } ,
@{ n = 'Fullname'; e = { Convert-Path $_.PSParentPath } } |
Export-Csv "C:\user\desktop\txt.txt" -Encoding Utf8 -NoTypeInformation
Run Code Online (Sandbox Code Playgroud)
我在获取时遇到问题 @{ n = 'Fullname'; e = { Convert-Path $_.PSParentPath } }通过完整的文件路径。
非常感谢任何帮助。
DirectoryInfoGet-ChildItem对象(文件夹的输出)具有属性Name以及FullName文件夹的名称和完整路径。它们还有一个属性,可以返回父文件夹的Parent另一个对象。DirectoryInfo您可以将该信息添加为计算属性。
由于您基本上想要添加列出的项目的祖父母名称和路径,并且该信息不会更改,因为您不递归,因此您可以确定它们一次并将它们添加为静态信息:
$dir = 'C:\some\folder'
$folder = (Get-Item $dir).Parent
$folderName = $folder.Name
$folderPath = $folder.FullName
Get-ChildItem $dir |
Select-Object Name, FullName,
@{n='FolderName';e={$folderName}},
@{n='Folder';e={$folderPath}} |
Export-Csv 'C:\path\to\output.csv' -Encoding UTF8 -NoType
Run Code Online (Sandbox Code Playgroud)
PSParentPath当您打算PSPath获取全名(完整文件系统路径)时,您错误地引用了:
Get-ChildItem "C:\user\desktop" | Select Name, `
@{ n = 'Folder'; e = { Convert-Path $_.PSParentPath } }, `
@{ n = 'Foldername'; e = { ($_.PSPath -split '[\\]')[-2] } } ,
@{ n = 'Fullname'; e = { Convert-Path $_.PSPath } } # NOT $_.PS*Parent*Path
Run Code Online (Sandbox Code Playgroud)
但是,正如其他人所指出的,完整路径是由 生成的输出对象的标准属性Get-ChildItem,因此您可以简单地引用该FullName属性:
Get-ChildItem "C:\user\desktop" | Select Name, `
@{ n = 'Folder'; e = { Convert-Path $_.PSParentPath } }, `
@{ n = 'Foldername'; e = { ($_.PSPath -split '[\\]')[-2] } } ,
FullName
Run Code Online (Sandbox Code Playgroud)
PS:'\\'将作为-split运营商的RHS ,但如果你想跨平台友好,你可以使用[\\/]
注意:上面使用的基于哈希表的技术(@{ n = ...; e = ... },其中n是Name和efor 的缩写Expression)称为计算属性,在概念about_Calculated_Properties帮助主题中进行了描述,适用于所有支持计算属性的 cmdlet。
| 归档时间: |
|
| 查看次数: |
53161 次 |
| 最近记录: |