【发布时间】:2021-05-17 18:49:15
【问题描述】:
我在一个文件夹中有多个 .txt 文件,它们具有特定的数据格式,其中每一行都从 3 位数字开始,例如。
101,3333,35899,BufferC1,99,02,333
102,3344,30079,BufferD2,89,03,444
.... and so on.
现在,如果记录以“101”开头,那么我必须用一些文本替换同一行的第 3 和第 5 个索引元素。替换所有文件后,我必须将所有修改后的文件复制到同一台机器上的另一个目录/文件夹中。
我写了一些不工作的代码。请帮助我,因为我是 powershell 的新手。我的方法是否正确?
$FileNamesList = @(Get-ChildItem C:\TestFiles\*.txt | Select-Object -ExpandProperty Name)
for($i=0; $i -lt $FileNamesList.count; $i++)
{
# original folder path
$FilePath1 = 'C:\TestFiles\' + $FileNamesList[$i]
#modified files after text is replaced will be copied in another folder
$FilePath2 = 'C:\TestFilesModified\' + $FileNamesList[$i]
$OriginalFileData = Get-Content $FilePath1
# Is this correct, can i assign foreach cmd result to a variable?
$ModifiedFileData= ForEach($Row in $OriginalFileData )
{
If($Row.Split(",")[0] -eq "101")
{
$Row -replace($Row.Split(",")[3]),"Test File"
$Row -replace($Row.Split(",")[5]),"Test Data"
}
else{
$Row
}
Out-File -FilePath $FilePath2 -InputObject $ModifiedFileData
}
【问题讨论】:
-
所有文件的列数是否相同?他们有标题行,还是只有数据?
-
@ Mathias R. Jessen,这些只是普通的 .txt 文件,没有标题,只有数据。此外,这些文件没有相同的列数。我只需要更改第一个元素中以“101”开头的行。
标签: .net powershell powershell-2.0 powershell-3.0 msdn