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

4
我有一个包含名为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个回答

13

你需要使用 Get-ChildItem 命令。

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 命令返回对象列表,您需要选择要从对象中提取的信息。如果在具有一些内容的目录中执行 ls 命令,则会看到内容已格式化为表格。

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


现在使用get-alias -d get-childitem可以从完整的cmdlet名称中获取别名。为了完整起见,当从别名获取cmdlet名称时,我们省略了-dget-alias ls - PaulR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接