如何在Powershell中以逗号分隔的字符串形式获取目录中的所有文件名?

问题描述 投票:0回答:4

我想以逗号分隔的字符串形式获取目录中的所有名称,以便我可以将它们作为参数传递给 cmdlet。

如何在 Powershell 中以逗号分隔的字符串形式获取目录中的所有文件名?

.net powershell directory
4个回答
9
投票

一种方法是:

 (dir  | % { $_.basename }) -join ','

3
投票

最快/最短路线:

(ls).name -join ','

对于特定文件夹路径:

(ls path\to\folder).name -join ','

2
投票

这应该有效:

(ls C:\PATH\TO\FOLDER | select -expandproperty name) -join ','

如果您想避免其中有子文件夹:

(ls C:\PATH\TO\FOLDER | ?{$_.PSIsContainer -eq $false} | select -expandproperty name) -join ','

0
投票

对于那些可能更喜欢经典 Windows 的人

dir
,这里有一个 Eddie 的答案的变体(它使用了 *nix-like
ls
,当然 ps 也支持):

(dir -name) -join ','

这将产生与他的

ls
示例完全相同的结果。 (需要明确的是,这只能在 powershell 中工作——正如问题中所要求的——但不能在 Windows 命令行中工作。)

如果您想从结果中删除文件夹名称(在他或我的示例中),请添加 -file 开关:

(dir -file -name) -join ','
(ls -file).name -join ','

当然,您可以按照

dir
(或
ls
)指定要查找的文件模式或要查找的文件夹。这些示例只是获取当前文件夹中的所有文件。要查找 exe 的起始 j 的所有文件名,这可以工作:

(dir j*.exe -file -name) -join ','

FWIW,powershell 中的这个

dir
Get-ChildItem
的别名,使用
help dir
将显示它的许多其他参数/开关。

© www.soinside.com 2019 - 2024. All rights reserved.