我需要从过滤路径中搜索特定的文件夹名称。
例如:
我在磁盘m上有一些文件夹:
M:\
├───2.46.567
│ └───A
├───3.09.356
│ └───A
├───4.05.123
│ └───A
└───4.05.124
└───B
我只想从4.05.xxx目录搜索文件夹A。而且我还想检查一下此文件夹是否是最后一个包含文件夹A的文件。
我尝试类似以下命令的内容:
Get-ChildItem -Path m:\* -recurse -filter '*4.05*' | sort -descending LastWriteTime
我可以在PowerShell中执行此操作吗?
答案 0 :(得分:0)
尝试一下:
param(
$SourceDir = "M:\"
)
$a = gci $SourceDir | foreach { $i = gci $sourcedir\$_ -Name ; if($i.equals("A")) {"$_"} }
for($h=0;$h -le $a.Length-1; $h++ ) {
if($a[$h] -like "4.05.*") {
$a[$h]
if( $a[$h].equals($a[$a.length-1])) {
"It is the last one."
}}}
这将返回所有包含文件夹“ A”并具有“ 4.05”的文件夹。作为其名称的一部分。它还将返回它是否是数组中的最后一个文件夹,因此也返回包含“ A”的最后一个文件夹。
答案 1 :(得分:0)
Get-ChildItem允许在路径中的多个级别上使用通配符,而不仅仅是最后一个-无需递归。
Get-ChildItem 'M:\4.05.*\A' -Directory | Sort-Object -Descending LastWriteTime
在上面的树中,它仅返回一个条目:
Directory: M:\4.05.123
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019-08-30 12:10 A
基于上述树具有相同结果的替代方案:
Get-ChildItem -Path 'M:\4.05.*' -Filter A -Recurse -Directory | Sort-Object -Descending LastWriteTime
Get-ChildItem 'M:\4.05.*\A' | Where-Object {$_.PSIsContainer} |
Sort-Object -Desc LastWriteTime | Select-Object -First 1 | Set-Location
答案 2 :(得分:0)
您也可以使用Resolve-Path
。
(Resolve-Path "M:\4.05.*\A").ProviderPath
这将返回您要查找的路径的字符串(不是文件夹对象!)。