如何使用 Windows PowerShell 从路径获取最新创建的文件夹?
我有路C:\temp
我想在此路径中找到最近创建的文件夹。
PowerShell 主要与管道一起工作,因此您编写的大部分内容将包括创建表示某些信息的对象,以及过滤和操作它们。在本例中,对象是一堆文件夹。
-
获取文件夹中的所有项目。这将获取文件and文件夹,这就是为什么需要执行步骤 2。这|
行尾表示管道将在下一行继续 - 由以下对象创建的对象Get-ChildItem
然后将被一一传递给另一个命令。
Get-ChildItem c:\temp |
-
过滤文件夹。遗憾的是,没有真正优雅的方法。不要担心它说的是“容器”,而不是“文件夹”——这些命令适用于许多不同的事物,而不仅仅是文件和文件夹,因此在命名时使用了更通用的概念。
Where { $_.PSIsContainer } |
-
按日期降序排序,因此最新的文件夹是第一个。
Sort CreationTime -Descending |
-
选择第一个(最新的)文件夹。
Select -First 1
简而言之:
gci c:\temp | ? { $_.PSIsContainer } | sort CreationTime -desc | select -f 1
or
(gci c:\temp | ? { $_.PSIsContainer } | sort CreationTime)[-1]
这两行都大量使用 PowerShell 中命令的默认别名,例如?
for Where-Object
。不过,您应该在脚本中使用全名,因为您永远不知道别名在代码可能运行的其他计算机上是什么样子。
EDIT:PowerShell 3 有额外的参数Get-ChildItem
允许您直接对文件或文件夹进行过滤,因此您不需要Where
:
Get-ChildItem -Directory C:\temp | ...
通常,您将在 PowerShell 中使用对象及其属性。两个非常有用的命令是Get-Member
及其别名gm
and Get-Command
要不就gcm
. Get-Member
会告诉你对象有哪些属性和方法;你只需将其他东西输入其中即可:
Get-ChildItem | gm
会告诉您文件和目录有哪些属性。
Get-Command
将列出所有命令或与特定模式匹配的命令。 PowerShell 命令在动词和名词的使用上尽量保持一致。查找所有以以下结尾的命令Object
你可以试试gcm *-Object
– 这些是通用命令,几乎适用于所有内容。Get-Help ForEach-Object
然后会告诉你一个特定的命令,ForEach-Object
在这种情况下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)