使用PowerShell在目录中获取文件名

时间:2014-10-30 15:01:41

标签: powershell

我有一个包含名为Bruce.txt的文件的目录。我需要将文件名复制到平面文件。我尝试使用copy-item命令,但复制的内容不是名称。

是否有将Bruce.txt(名称不是内容)复制到平面文件的命令?所以在完成后会有一个名为process.txt的文件,其内容将是Bruce.txt。我尝试使用

Copy-Item -Path "C:\Users\Bruce\deploy\*.txt" -Destination "C:\Users\Bruce\process.txt"

deploy内部是一个名为Bruce.txt的文本文件,其内容为select count() from EMP_NR

我需要Bruce.txt复制到process.txt的名称而不是Select count()等。

对于Shell脚本,我使用ls命令,它可以很好地用于Powershell吗?

1 个答案:

答案 0 :(得分:3)

您需要使用Get-ChildItem cmdlet。

Get-ChildItem C:\Users\Bruce\deploy\*.txt | Select-Object -ExpandProperty Name | Out-File C:\Users\Bruce\process.txt -Force -Append

但是,当您使用PowerShell时,ls实际上对您有用,gcidir也是如此,因为它们都是Get-ChildItem的别名:

>  get-alias | ? {$_.DisplayName -ilike "*get-childitem*" }

CommandType     Name
-----------     ----
Alias           dir -> Get-ChildItem
Alias           gci -> Get-ChildItem
Alias           ls -> Get-ChildItem

如果您愿意,也可以使用>>>代替Out-File

由于Get-Childitem cmdlet返回对象列表,因此您还需要选择要从对象中提取的信息。如果在包含某些内容的目录中执行ls,您将看到内容已格式化为表格。

通过使用Select-Object cmdlet,您可以提取要写入文件的对象属性,在本例中为Name属性。