不指定完整路径的 Get-ChildItem 路径

Get-ChildItem path without specifying the full path

所以我正在尝试获取特定路径的 childItem。

我的命令是这样的

(Get-ChildItem -Path fes\.policy -Recurse -Directory -Exclude ".*")

完整路径是这样的:

path 'C:\Users\(name)\(folder)\(folder)\(folder)\(folder)\governance\fes\.policy

当我站在 \governance\ 文件夹中并 运行 命令时,它工作正常。但是当我在其他地方时,它只是添加参数 \fes.policy 并说路径不存在

Get-ChildItem: Cannot find path C:\Users\(name)\(folder)\(folder)\(folder)\(folder)\governance\src\Tests\fes\.policy'  because it does not exist.

这是有道理的,但它只是不知道我如何让它返回目录,然后将 \fes.policy 放在路径上。

路径的起点并不总是相同的,所以我不能把整个路径都放进去。

您需要提供 完全限定路径(从 C: 开始的驱动器根目录开始的路径)或相对路径(从当前工作目录)。听起来像是,您正在尝试使用相对路径,这在仅部分保证文件夹结构时很有用(例如,下面示例中的 FolderA 将始终存在,但它位于 C: 下可能因系统而异)。

.. 是一个保留的目录“名称”,意思是父文件夹,类似于 . 用来表示当前文件夹的方式。如果您在目录结构的不同分支中而不是 fes/.policy 所在的位置,则需要使用 .. 提供文件的相对路径。

因为我不知道你的完整目录结构,只知道你提供的内容,让我们来看下面的例子:

  • 当前目录:C:\Users\username\FolderA\FolderB\FolderC
  • 目标文件:C:\Users\username\FolderA\governance\src\Tests\fes\.policy

来自 FolderC,您应该能够使用以下路径找到带有 Get-ChildItem 的文件:

Note: If any of the path has spaces you will want to wrap them in single or double quotes (the latter if you want to expand variables within the path string), or else escape the spaces with `, though quoting is preferred.

Get-ChildItem ../../governance/src/Tests/fes/.policy

由于..代表当前目录的父文件夹,所以../../代表两个父目录,将把你放在FolderA .从那里你知道 governance/ 存在,你可以根据需要设计其余路径。