gpt4 book ai didi

powershell - 如何处理不同的路径分隔符?

转载 作者:行者123 更新时间:2023-12-04 02:21:33 27 4
gpt4 key购买 nike

我想编写可在所有 PowerShell 平台上运行的代码。以下代码生成在 Windows 上使用 \ 路径分隔符和在 Linux 上使用 / 路径分隔符的输出。

Get-ChildItem -File -Recurse | ForEach-Object { $_.FullName }

我想排除 obj 目录下任何位置的文件。 obj 目录的数量和深度未知。一种方法是使用如下内容过滤掉那些。但是,这在 Linux 上不起作用,因为路径分隔符不同。

Get-ChildItem -File -Recurse | 
Where-Object { -not ($_.FullName -like '*\obj\*' |
ForEach-Object { $_.FullName }

使用正则表达式模式似乎可行,但我想知道是否有更明确的方法来做到这一点。我认为这很尴尬。不仅如此,\\ 字符作为 Linux 文件名的一部分是有效的,这可能会对该代码造成故障漏洞。

Get-ChildItem -Recurse |
Where-Object { -not ( $_.FullName -like "*[/\]obj[/\]*") } |
ForEach-Object { $_.FullName }

最佳答案

我建议将处理目录分隔符的责任转移到底层 .Net 平台。像这样:

Get-ChildItem -Recurse |
Where-Object { $_.FullName.Split([IO.Path]::DirectorySeparatorChar) -notcontains "obj" } |
ForEach-Object { $_.FullName }

关于powershell - 如何处理不同的路径分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570781/

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