我正在运行的 PowerShell 脚本的一部分,我希望它完全忽略特定文件夹或路径。
我尝试使用-notmatch
and also-notlike
运算符。但它似乎仍会遍历该文件夹中的每个文件。虽然它不会处理该文件夹中的项目,所以我得到了想要的结果,但该文件夹中仍然有数十万个文件,并且可能需要很长时间才能运行脚本。我只是希望它完全绕过该文件夹。
这是我拥有的脚本的一部分:
$allfiles = Get-ChildItem -path $BaseDirectory -Force -File -Recurse | ? { $_.FullName -notmatch 'DATA\SHARED\GAMES\STEAM\SteamLibrary' } | select-object Name,FullName,Length
我也试过:
Where { $_.FullName -notlike '*\DATA\SHARED\GAMES\STEAM\SteamLibrary\*' }
有没有更好的方法让它完全跳过该文件夹,最好使用相对路径?甚至只是文件夹名称SteamLibrary
谢谢!
获取除 SteamLibrary 之外的所有目录,然后获取每个目录中的文件:
排除多个项目的选项
如果我们想排除多个文件夹,我们可以使用:
但是只有两个值,它已经变得很麻烦了。
-match/notMatch
运算符使用正则表达式而不是简单的通配符,因此要排除多个值,我们可以使用正则表达式运算or
符|
::这可以扩展到 3、4 或 5 个值并且仍然可以管理。此外,比较字符串可以在代码前面的变量中定义:
对于较大的排除值集合,最好的方法可能是将排除值放在字符串数组中并使用
-notIn
运算符: