我有一个脚本,可以查找包含某些字符串的文件。
假设我找到的文件是:
C:\temp\drivers\etc\file.INF
我想获取该文件的第二个父文件夹。
例如,如果是
C:\temp\drivers\etc\file.INF
我想要这样的路径:
C:\temp\drivers
在这种情况下,什么对您最有意义?
我可以使用它:
$test = "C:\temp\drivers\etc\file.INF"
$first_parent = Split-path $test -Parent
$second_parent= $first_parent.Substring(0,$first_parent.LastIndexOf('\'))
$second_parent
输出:
C:\temp\drivers
但这是最佳选择吗?
答案 0 :(得分:1)
如果项目是文件(不仅仅是字符串),则可以从fileinfo
或Get-Item
获得的Get-ChildItem
对象派生祖父母目录。这样...
$FileName_String = 'C:\temp\drivers\etc\file.INF'
# fake reading in the fileinfo object
# in real life, use Get-Item or Get-ChildItem
$FileName_FileInfoObject = [System.IO.FileInfo]$FileName_String
$2ndParentDir = $FileName_FileInfoObject.Directory.Parent
$FileName_String
$FileName_FileInfoObject.FullName
$2ndParentDir.FullName
输出...
C:\temp\drivers\etc\file.INF
C:\temp\drivers\etc\file.INF
C:\temp\drivers
如果只是字符串,则需要使用Split-Path
两次。 [咧嘴]
答案 1 :(得分:0)
两次使用分割路径即可完成此操作。最简单的方法是管道:
$test = "C:\temp\drivers\etc\file.INF"
Split-path $test | split-path
输出:
C:\temp\drivers