从PS中的输出文件中排除扩展名?

时间:2019-10-18 09:32:52

标签: powershell

我的目标是在名为C:\test的日志文件中显示目录log.txt中的项目,而不显示找到的文件的文件扩展名,例如.zip.pdf

到目前为止,我的脚本是

Get-ChildItem -Path C:\Test\ -name |Out-File C:\test2\log.txt

如何获取.log文件以不显示在C:\test文件夹中找到的文件的扩展名?

1 个答案:

答案 0 :(得分:4)

使用BaseName属性代替Name

Get-ChildItem -Path C:\Test\ | Select-Object -ExpandProperty BaseName | Out-File C:\test2\log.txt

由于-BaseName cmdlet没有内置的Get-ChildItem属性,因此您需要使用Select-Object获取该属性。扩展属性可以让您仅获取所选属性的值,而无需标题。

获取BaseName值的另一种方法是像这样使用.BaseName

(Get-ChildItem -Path C:\Test\).BaseName | Out-File C:\test2\log.txt

这种形式较短,但是个人由于可读性强,我更喜欢第一种形式,不需要记住周围的括号()


最佳做法

如果要检查对象的可能的属性(及其值),还可以使用Select-Object

# Warning: HUGE OUTPUT POSSIBLE
Get-ChildItem -Path C:\test\| Select-Object *
# It's usually good to take only one object from the array
$obj = (Get-ChildItem -Path C:\test\)[0]
$obj | Select-Object *