gpt4 book ai didi

file - 如何在 PowerShell 中检查文件是否在给定目录下?

转载 作者:行者123 更新时间:2023-12-04 14:53:10 26 4
gpt4 key购买 nike

我想从 PowerShell 检查文件路径是否在给定目录(或其子目录之一)中。

现在我正在做:

$file.StartsWith(  $directory, [StringComparison]::InvariantCultureIgnoreCase )

但我相信有更好的方法。

我可以带 $file.Directory并遍历所有 .Parent s,但我希望有更简单的东西。

编辑 : 文件可能不存在;我只是在看路。

最佳答案

像这样简单的事情怎么样:

PS> gci . -r foo.txt

这隐式使用 -filter 参数(按位置)指定 foo.txt 作为过滤器。您还可以指定 *.txt 或 foo?.txt。 StartsWith 的问题在于,当您处理不区分大小写的比较时,仍然存在/和\都是 PowerShell 中有效路径分隔符的问题。

假设文件可能不存在并且 $file 和 $directory 都是绝对路径,您可以通过“PowerShell”方式执行此操作:
(Split-Path $file -Parent) -replace '/','\' -eq (Get-Item $directory).FullName

但这并不是很好,因为您仍然必须规范路径/->\但至少 PowerShell 字符串比较是不区分大小写的。另一种选择是使用 IO.Path 规范化路径,例如:
[io.path]::GetDirectoryName($file) -eq [io.path]::GetFullPath($directory)

一个问题是 GetFullPath 还会根据进程的当前目录使相对路径成为绝对路径,这与 PowerShell 的当前目录不同。所以只要确保 $directory 是一个绝对路径,即使你必须像“$pwd\$directory”一样指定它。

关于file - 如何在 PowerShell 中检查文件是否在给定目录下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1029489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com