Windows 使用单个命令列出2个文件夹

Windows 使用单个命令列出2个文件夹,windows,powershell,command-line,powershell-2.0,Windows,Powershell,Command Line,Powershell 2.0,假设我有两个文件夹A和B Folder A contains files like "food.txt", "drinks.txt", ... Folder B contains files like "beverage.txt", "entre.txt",... 有没有一种方法可以使用dir(gci)或任何命令来获得像这样的输出 "beverage.txt", "drinks.txt", "entre.txt", "food.txt",.. 只需使用: Get-ChildItem -Fil

假设我有两个文件夹A和B

Folder A contains files like "food.txt", "drinks.txt", ...
Folder B contains files like "beverage.txt", "entre.txt",...
有没有一种方法可以使用dir(gci)或任何命令来获得像这样的输出

"beverage.txt", "drinks.txt", "entre.txt", "food.txt",..
只需使用:

Get-ChildItem -File -Recurse | Select-Object -ExpandProperty Name
-文件
将仅列出文件
-Recurse
还将获取给定文件夹下的所有文件夹

选择对象-Expandproperty Name
将只提供文件名


如果文件位于完全不同的位置,您可以提供多个路径:

Get-ChildItem -File -Path "PathToFolderA","PathToFolderB" | Select-Object -ExpandProperty Name

PSv3之前检查文件/目录的方法是检查
Where对象中的
PSIsContainer
属性

因此,这一行将返回:

PS A:\> Get-ChildItem -Path "Folder A","Folder B" |Where-object {!$_.PSIsContainer}| Select-Object -ExpandProperty Name
drinks.txt
food.txt
beverage.txt
entre.txt
用双引号直接回答问题,并用

(Get-ChildItem -Path "Folder A","Folder B" |Where-object {!$_.PSIsContainer}|ForEach-Object { '"{0}"' -f $_.Name}) -join ', '
"drinks.txt", "food.txt", "beverage.txt", "entre.txt"
要对输出进行排序,只需插入一个
| Sort Object Name

(Get-ChildItem -Path "Folder A","Folder B" |sort Name|Where-object {!$_.PSIsContainer}|ForEach-Object { '"{0}"' -f $_.Name}) -join ', '
"beverage.txt", "drinks.txt", "entre.txt", "food.txt"

file参数为我提供了“找不到与参数名称匹配的参数”file@user10191234您使用的Powershell版本是什么(如果不是PS 5.0,则可能需要更新)?我不记得在哪个选项中引入了
-File
,但在当前版本中,它按预期工作。@Paxz在左侧访问,您可以切换Powershell版本并查看参数所在的位置。PSv3已经有
-File
,因此这是一个PSv2问题。使用Windows SP17的问题会得到文件夹a文件,然后是文件夹B,可以修改它使它们交替出现吗,比如a中的文件,然后是B中的文件,然后是a中的文件…。谢谢,但是可以像我在上面评论的那样交替出现吗?这实际上是一个新问题,应该这样问。请注意,对其他答案的评论只能通过重新阅读才能看到。正如@Paxz已经提到的,它将需要不同的方法。两者都是上面使用的方法不返回标题,要将输出放入文件中,您可以使用重定向
>
设置内容
输出文件
。要了解命令和参数,请使用
Get-Help cmdlet name
。否则,新问题…顺便说一句,您应该阅读