首页 > 解决方案 > PowerShell - 列出所有文件夹、子文件夹和每个包含的文件(递归)但以格式化方式(树视图)

问题描述

我在 PowerShell 上使用以下命令来创建特定目录中所有文件和子文件夹的列表:

get-childitem -path c:\users\username\desktop\test -recurse | select name

所以假设我的桌面上有一个名为“test”的文件夹,在这个文件夹中我有三个文件和一个子文件夹,它本身包含更多的文件和子文件夹等等,我确实得到了这样的输出:

subfolder 1 of "test"
file 1 in "test"
file 2 in "test"
file 3 in "test"
subfolder a of "subfolder 1"
file 1 in subfolder 1
file 2 in subfolder 1
file 3 in subfolder 1
file 1 in subfolder a
file 2 in subfolder a
file 3 in subfolder a

所以这很好,但我想获得另一种输出,如下所示:

+  c:\users\username\desktop\test
|  -  file 1 in "test"
|  -  file 2 in "test"
|  -  file 3 in "test"
|--+  subfolder 1 of "test"
|  |  -  file 1 in subfolder 1
|  |  -  file 2 in subfolder 1
|  |  -  file 3 in subfolder 1
|  |--+  subfolder a of "subfolder 1"
|  |  |  -  file 1 in subfolder a
|  |  |  -  file 2 in subfolder a
|  |  |  -  file 3 in subfolder a
|--+  subfolder 2 of "test"
|  |  -
|  |  .
|  .  .
.  .
.

是否有可能(如果是的话 - 那么如何?)得到这样的输出?

我知道当时有一个名为“tree”的dos命令,但由于其局限性,它不能与PowerShell中get-childitem的输出一起使用。PowerShell 中是否有某种等效命令,或者我可以使用 get-childitem 命令及其开关/添加/...来执行此操作吗?

对不起,我的英语不好。并且:对不起,我是 PowerShell 的初学者。

标签: powershellsortingdirectoryget-childitem

解决方案


您习惯使用 cmd 的旧“树”是 system32 文件夹中的应用程序,而不是一些硬编码的 cmd 功能。

所以你仍然可以像往常一样从 powershell 运行它。

例如

Tree 'C:\Foldername'

Robocopy 和其他一些知名应用程序的工作方式相同。

外部程序中的错误可以在 $LastExitCode 中捕获,而不是通常的 $Error。这些代码的含义因程序而异。


推荐阅读