我发现这是为了在 CSV 文件中获取文件夹及其子文件夹(仅限文件)的内容:
dir -recurse | Where-Object { !$_.PSIsContainer } | Select FullName |
convertto-csv | out-file "test.csv"
但是,我想获取相对路径(相对于我运行命令的根目录)而不是完整路径。
谁能帮忙?
谢谢!
我发现这是为了在 CSV 文件中获取文件夹及其子文件夹(仅限文件)的内容:
dir -recurse | Where-Object { !$_.PSIsContainer } | Select FullName |
convertto-csv | out-file "test.csv"
但是,我想获取相对路径(相对于我运行命令的根目录)而不是完整路径。
谁能帮忙?
谢谢!
获得正确 Csv 文件的一种方法是包装我评论的输出:
或者使用计算属性从属性中删除起始目录
FullName
。这个问题给人的印象是您对 PowerShell 还很陌生。因此,至关重要的是,你必须加强它,以限制/避免你肯定会遇到的误解、坏习惯、错误和严重的挫败感。访问 YouTube/MSDN Channel9 并搜索初级、中级、高级 PowerShell,以及 PowerShell 文件系统管理和 PowerShell 文件和文件夹管理。
在许多情况下,PowerShell 会尝试强制执行某些操作,但它不会尝试弄清楚您想要做什么。你必须告诉它该做什么。好吧,对于任何计算机语言都是如此。
你的问题是你说...
... 好吧,你可能在从根驱动器开始 X 级深度的路径中,所以,现在你在一个孩子中,推断是你只想从孩子那里得到这个。这就是思维过程的问题。
将其保存到文本文件中,然后将永远不会有驱动器路径,因此当您返回使用它时,您将必须知道并手动将其放回以便再次使用这些文件。
所以,我不确定你的用例是什么,为了这个努力,但从逻辑上讲它会回来咬你。
所以,比方说,我在这里:
然后我们运行这个
所以,在这里我们只是获取当前位置......
所以,在这里我们只获取我们所在的当前路径,只询问文件名,而不是全名
如果我们将其输出为 CSV,您将不知道它来自哪个驱动器。因此,现在您必须搜索计算机上的每个驱动器以找到它们,或者记住执行此操作时您所在的位置。
让孩子失望,同样的事情。当然,你明白了,但它到底在哪里?在您的系统上,或在您映射到的某个网络驱动器上。
然后我们运行这个
如果你说,在这里,你不想要父根,那么你就把它关掉。
然而,这意味着,您不仅不知道它来自哪个驱动器,而且您也不知道其中的根父级来自哪个驱动器。
所以,就说吧。
顺便说一句,最好在脚本中使用完整的 cmdlet 名称。速记/别名适用于交互式内容。当然,我们都习惯使用'dir',但是get-ChildItem 的简写是'gci',和dir 一样短,但是,你知道的。
但是,嘿,习惯真的很难打破。;-} --- --- 谨慎的决定是那些对我们有用的决定,不管其他人怎么想。;-}
好吧,那些跟随你的人会表明立场。因此,成为一名优秀的 PowerShell 公民确实是一件好事。
顺便说一句,如果您打算在脚本中执行此操作,那么也有一个用于此类操作的自动变量。那么,获取脚本运行的位置,以及与该位置相关的任何内容。
请参阅这篇文章。
使用相对文件路径添加脚本灵活性