Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 如何查找文件夹名为“的所有文件夹”;简介;和文件类型*.mp4_Powershell - Fatal编程技术网

Powershell 如何查找文件夹名为“的所有文件夹”;简介;和文件类型*.mp4

Powershell 如何查找文件夹名为“的所有文件夹”;简介;和文件类型*.mp4,powershell,Powershell,我得到的最接近的是使用 我认为,-包含多个参数作为或操作符工作。它提供包含“简介”文件夹或“*.mp4”文件的文件夹 但是我需要和条件。文件夹必须包含名为“Intro”和“*.mp4”文件的文件夹 我需要文件夹结构如下- E:. └───test1.mp4 └───test2.mp4 └───test3.mp4 └───test4.mp4 └───test5.mp4 └───test6.mp4 └───Intro 更新1 我正在搜索满足两个条件的文件夹 它必须有一个名为Intro的子文件夹,并

我得到的最接近的是使用

我认为,
-包含多个参数作为
操作符工作。它提供包含“简介”文件夹或“*.mp4”文件的文件夹

但是我需要
条件。文件夹必须包含名为“Intro”和“*.mp4”文件的文件夹

我需要文件夹结构如下-

E:.
└───test1.mp4
└───test2.mp4
└───test3.mp4
└───test4.mp4
└───test5.mp4
└───test6.mp4
└───Intro
更新1


我正在搜索满足两个条件的文件夹

  • 它必须有一个名为
    Intro
    的子文件夹,并且

  • 它必须有
    *.mp4
    文件

  • 我想答案大概如下所示

    Get-ChildItem -Directory -Recurse {HasSubFolderNamedIntro && HasMP4Files}
    

    是否需要该命令仅返回文件对象,还是还需要文件夹对象? 如果只是文件,我会这样做:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    
    因此,我们使用include查找mp4文件,并减少管道中的对象数量。 然后我们通过管道将其传输到
    Where Object
    ,查找带有文件夹名称的属性,并说我们希望它包含单词“intro”。如果文件夹需要准确地称为Intro而不仅仅包含它,您可以将
    -match
    更改为
    -eq

    编辑
    要获取目录,我们可以这样做:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    
    现在我们说,我们找到的所有与搜索匹配的文件,我们希望看到这些文件的完整目录路径

    为了每个目录只获得一个匹配项,因此如果我们有一个目录与多个mp4文件匹配,并且我们不希望在每个文件的输出中看到同一个目录一次,我们可以将结果导入
    Select Object-Unique
    ,以便只看到每个目录一次

    编辑2
    经OP.澄清后。
    要找到一个包含mp4文件和名为intro的子文件夹的文件夹,我认为我们无法以我所知的任何方式仅通过Get ChildItem命令进行查找,因此我们可以像这样循环遍历每个文件夹:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    

    我们通过管道连接到
    Select Object-Unique
    ,以确保包含多个mp4文件的文件夹不会循环多次,从而多次向我们提供具有相同简介文件夹的输出。

    您需要该命令仅返回文件对象还是还需要文件夹对象? 如果只是文件,我会这样做:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    
    因此,我们使用include查找mp4文件,并减少管道中的对象数量。 然后我们通过管道将其传输到
    Where Object
    ,查找带有文件夹名称的属性,并说我们希望它包含单词“intro”。如果文件夹需要准确地称为Intro而不仅仅包含它,您可以将
    -match
    更改为
    -eq

    编辑
    要获取目录,我们可以这样做:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    
    现在我们说,我们找到的所有与搜索匹配的文件,我们希望看到这些文件的完整目录路径

    为了每个目录只获得一个匹配项,因此如果我们有一个目录与多个mp4文件匹配,并且我们不希望在每个文件的输出中看到同一个目录一次,我们可以将结果导入
    Select Object-Unique
    ,以便只看到每个目录一次

    编辑2
    经OP.澄清后。
    要找到一个包含mp4文件和名为intro的子文件夹的文件夹,我认为我们无法以我所知的任何方式仅通过Get ChildItem命令进行查找,因此我们可以像这样循环遍历每个文件夹:

    Get-ChildItem -include "*.mp4" -Recurse -File | Where-Object {$_.Directory.Name -match 'Intro'}
    
    (Get-ChildItem -include "*.mp4" -Recurse | Where-Object {$_.Directory.Name -match 'Intro'}).DirectoryName | Select-Object -Unique
    
    $Files = (Get-ChildItem -include "*.mp4" -Recurse -File).DirectoryName  | Select-Object -Unique
    
    foreach($File in $Files) {
    Get-ChildItem -Path $File.DirectoryName -Recurse -Include 'Intro' -Directory
    }
    

    我们通过管道连接到
    Select Object-Unique
    ,以确保包含多个mp4文件的文件夹不会循环多次,从而多次输出相同的简介文件夹。

    只想添加另一种方法(一行程序)来获取包含
    mp4文件的文件夹和文件夹
    intro
    (大部分问题由@HenrikStanleyMortensen负责):


    只是想添加另一种方法(一行代码)来获取包含
    mp4文件的文件夹
    和一个文件夹
    Intro
    (大多数情况下是@HenrikStanleyMortensen):


    我已更新了我的答案,以显示您将如何从该输出中找到文件夹。您是否有可能澄清我们的问题?沟通中一定有一些问题。据我所知,您需要以下内容..一种查找所有文件夹的方法,称为简介并包含mp4文件。如果不是这种情况,您是否可以用文字尝试删除抄录您期望的输出?我正在搜索满足两个条件的文件夹。1.它必须有一个子文件夹名为“Intro”
    2.它必须有
    *.mp4
    文件。您更新的解决方案返回名为“Intro”的文件夹其中有*.mp4文件。@HenrikStanleyMortensen我更新了问题。虽然我有点直接告诉你,但感谢你的帮助。没问题,这是一个互相帮助的社区:)我更新了我的答案,所以我们现在首先查找包含mp4文件的文件夹,然后,我们检查mp4文件所在的文件夹中是否也有一个名为intro的文件夹。我已更新了我的答案,以显示您将如何从该输出中找到这些文件夹。您是否有可能澄清我们的问题?交流中一定有什么东西丢失了。据我所知,你想要的是。。查找所有名为intro并包含mp4文件的文件夹的方法。如果不是这样,你能用文字来描述你期望的输出吗?我正在搜索满足两个条件的文件夹。1.它必须有一个子文件夹名为“Intro”
    2。它必须有
    *.mp4
    文件。更新后的解决方案返回名为“Intro”的文件夹,其中包含*.mp4文件。@HenrikStanleyMortensen我更新了问题。谢谢你的帮助,虽然我有点直接对你。没问题,这是一个互相帮助的社区:)我已经更新了我的答案,所以我们现在首先查找包含mp4文件的文件夹,然后检查mp4文件的文件夹中是否也包含名为intro的文件夹。