file之如何使用powershell检查文件夹中是否存在特定的文件扩展名

zengkefu 阅读:36 2024-11-01 17:39:52 评论:0

我有一个包含许多文件夹和子文件夹的根目录。我需要检查文件夹或子文件夹中是否存在像 *.sln 或 *.designer.vb 这样的特定文件,并将结果输出到文本文件中。

例如:

$root = "C:\Root\" 
$FileType = ".sln",".designer.vb" 

文本文件的结果类似于以下内容:
.sln ---> 2 files 
.sln files path ---->  
c:\Root\Application1\subfolder1\Test.sln 
c:\Root\Application2\subfolder1\Test2.sln 

任何帮助将不胜感激!

问候,
阿西什

请您参考如下方法:

尝试这个:

function Get-ExtensionCount { 
    param( 
        $Root = "C:\Root\", 
        $FileType = @(".sln", ".designer.vb"), 
        $Outfile = "C:\Root\rootext.txt" 
    ) 
 
    $output = @() 
 
    Foreach ($type in $FileType) { 
        $files = Get-ChildItem $Root -Filter *$type -Recurse | ? { !$_.PSIsContainer } 
        $output += "$type ---> $($files.Count) files" 
        foreach ($file in $files) { 
            $output += $file.FullName 
        } 
    } 
 
    $output | Set-Content $Outfile 
} 

我把它变成了一个函数,你的值作为默认参数值。通过使用调用它
Get-ExtensionCount    #for default values 

或者
Get-ExtensionCount -Root "d:\test" -FileType ".txt", ".bmp" -Outfile "D:\output.txt" 

输出保存到文件 ex:
.txt ---> 3 files 
D:\Test\as.txt 
D:\Test\ddddd.txt 
D:\Test\sss.txt 
.bmp ---> 2 files 
D:\Test\dsadsa.bmp 
D:\Test\New Bitmap Image.bmp 

要在开始时获取所有文件计数,请尝试:
function Get-ExtensionCount { 
    param( 
        $Root = "C:\Root\", 
        $FileType = @(".sln", ".designer.vb"), 
        $Outfile = "C:\Root\rootext.txt" 
    ) 
    #Filecount per type 
    $header = @() 
    #All the filepaths     
    $filelist = @() 
 
    Foreach ($type in $FileType) { 
        $files = Get-ChildItem $Root -Filter *$type -Recurse | ? { !$_.PSIsContainer } 
        $header += "$type ---> $($files.Count) files" 
        foreach ($file in $files) { 
            $filelist += $file.FullName 
        } 
    } 
    #Collect to single output 
    $output = @($header, $filelist)     
    $output | Set-Content $Outfile 
} 


标签:Shell
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号