gpt4 book ai didi

powershell - powershell GCI递归地跳过文件夹和某些文件类型

转载 作者:行者123 更新时间:2023-12-03 01:20:50 24 4
gpt4 key购买 nike

目前,我正在使用此行来收集特定路径(及以后)中的所有文件

$files = Get-ChildItem -Path $loc -Recurse | ? { !$_.PSIsContainer }

但是,现在我一直要求生成此列表,同时排除(例如)所有“docx”和“xlsx”文件...以及名为“scripts”的文件夹及其内容

我想将这些文件扩展名和目录名称从txt文件读入数组中,然后简单地使用该数组。

速度也很重要,因为我将在这些文件上执行的功能需要足够长的时间,因此我不需要此过程来减慢我的脚本10的运行速度(一点点还可以)

非常感谢您的投入

失败的尝试:
gi -path H:\* -exclude $xfolders | gci -recurse -exclude $xfiles | where-object { -not $_.PSIsContainer }

我认为这可行,但是文件夹排除仅在H:\驱动器的根目录下进行

最佳答案

像这样吗我正在比较实际路径($ loc的路径),以防$loc包含要忽略的文件夹名称之一。

$loc = "C:\tools\scripts\myscripts\"
$files = Get-ChildItem -Path $loc -Recurse -Exclude *.docx, *.xlsx | ? { !$_.PSIsContainer -and !($_.FullName.Replace($loc,"") -like "*scripts\*") }

多个文件夹(这很难看):
#Don't include "\" at the end of $loc - it will stop the script from matching first-level subfolders
$loc = "C:\tools\scripts\myscripts"
$ignore = @("testfolder1","testfolder2");

$files = Get-ChildItem -Path $loc -Recurse -Exclude *.docx, *.xlsx | ? { !$_.PSIsContainer } | % { $relative = $_.FullName.Replace($loc,""); $nomatch = $true; foreach ($folder in $ignore) { if($relative -like "*\$folder\*") { $nomatch = $false } }; if ($nomatch) { $_ } }

关于powershell - powershell GCI递归地跳过文件夹和某些文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14405606/

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