结合TXT文件的目录到一个文件中列在结尾处添加与文件名
问题描述:
我已经得到的,我想合并到一起的目录一套txt文件。结合TXT文件的目录到一个文件中列在结尾处添加与文件名
所有TXT文件的内容是相同的格式如下:
IPAddress Description DNSDomain --------- ----------- --------- {192.168.1.2} Microsoft Hyper-V Network Adapter {192.168.1.30} Microsoft Hyper-V Network Adapter #2
我有下面的代码,结合在一个txt文件名为全部.txt所有txt文件。
copy *.txt all.txt
从这个全部.txt我什么也看不见线从什么txt文件来了。任何想法的任何位的代码,将添加一个额外的列结束txt文件与行的文件名来自?
答
按照上述意见,你就把Format-Table
输出到一个文本文件中。需要注意的是Format-Table
可能视觉结构在屏幕上,但仅仅是文本行。通过这样做,你已经更难处理数据。
如果你只是想从Get-WMIObject
cmdlet的结果,一些属性,使用Select-Object
这(在这里给出的使用)将有效地过滤数据,你想要的属性。
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName SERVERNAMEHERE |
Select-Object PSComputerName, IPAddress, Description, DNSDomain |
Export-Csv 'C:\temp\server.csv'
需要注意的是,我们能够为包括PScomputerName:
而不是写文本到简单的文件,你可以通过写一个结构化的文件(即CSV)保存的数据的表格性质每行数据中的属性,有效地为您提供所需的额外数据列。
这么多获得的原始数据。你可以在所有的CSV数据读取并再次将其写出来的一种方式可能是这样的:
Get-ChildItem *.csv -Exclude all.csv |
Foreach-Object {Import-Csv $_} |
Export-Csv all.csv
注意,我们排除输出文件中的初始cmdlet来避免读写形式/到同一个文件不休。
如果你不拥有的奢侈品来收集数据再次,你需要的文件卷轴一体。假脱机文件一起与Get-Content
做了,这样的事情:
Get-ChildItem *.txt -Exclude all.txt |
Foreach-Object {Get-Content $_ -Raw} |
Out-File all.txt
在你的情况,你想后缀的每一行,因为你需要处理的文件线由行其tricker:
$files = Get-ChildItem *.txt
foreach($file in $files) {
$lines = Get-Content $file
foreach($line in $lines) {
"$line $($file.Name)" | Out-File all.txt -Append
}
}
如果您还没有与格式表输入/输出字符串缺胳膊少腿你的数据,你可以添加在其中生成的文件脚本中的服务器名称的属性。 (然后将它们全部放入一个CSV文件中)。如果可能的话,返回并编辑该脚本,以便输出正确的数据 - 或易于处理数据,而不是尝试采用难以处理的输出并使用它。 – TessellatingHeckler
这是生成您看到的输出文件的powershell: Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled = TRUE -ComputerName SERVERNAMEHERE |格式 - 表格 - 属性IP地址,说明,DNSDomain | Out-File c:\ temp \ server.txt – user3290171
不需要添加文件名列。 'all.txt'的全部内容来自通配符模式'* .txt'枚举的最后一个文件,因为'copy * .txt all.txt'根本不会像您认为的那样工作。 –