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的文件夹。