我有一个包含名为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吗?
答案 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
实际上对您有用,gci
和dir
也是如此,因为它们都是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
属性。