如何使用PowerShell获取文件夹内所有文件夹名称的.txt文件,而不是子文件夹内的文件/子文件夹?
问题描述:
目前我使用,SHIFT +鼠标右键点击>此处打开PowerShell窗口>然后在如何使用PowerShell获取文件夹内所有文件夹名称的.txt文件,而不是子文件夹内的文件/子文件夹?
dir -recurse | select -ExpandProperty Name | foreach {$_.split('.',2)[0]} | out-file file.txt
唯一的问题是粘贴我选择一个目录Shift +右键点击,但我得到的所有文件名/第二个文件夹内的文件夹,它真的毁了我要去的组织。
因此,例如我有一个名为“RootFolder”的文件夹。 RootFolder内部是10个其他文件夹,称为“Folder1”到“Folder10”。 我只想将名称Folder1 - Folder10放在shell命令创建的.txt文件夹中。我不想在.txt文件中的文件夹Folder1-10内的子文件夹/文件。
答
如果你只想列出你需要告诉它的目录。
Dir -R | ? { $_.PSIsContainer }
或
Dir -R | ? { $_ -is [System.IO.DirectoryInfo] }
在最近的PowerShell的版本,你可以直接做到这一点。
Dir -Dir
Dir
= GET-ChildItem -R
= -Recurse ?
=位置对象-Dir
= -Directory
答
如果你只是想指定的目录内的目录,你不想进行递归。这将遍历整个目录层次结构;只需使用-Directory开关将输出过滤为仅包含目录。
然后,您可以从DirectoryInfo对象中提取Name属性。
PS C:\> dir C:\Windows -Directory |% { $_.Name }
addins
appcompat
apppatch
AppReadiness
[...]
并根据需要输出。更简洁:
(dir C:\Windows -Directory).Name