Если вы хотите перезаписать строку 11 в файле Data2.txt со строкой 11, считанной из файла Data1.txt, вы можете go с полезным ответом DevX .
Однако, при этом весь файл Data1.txt считывается в памяти, и, не зная, насколько велик этот файл, может быть более дружественный подход к памяти с использованием параметра TotalCount
:
$copyLineFrom = 'C:\Desktop\Data1.txt'
$fileToUpdate = 'C:\Desktop\Data2.txt'
# get line 11 from Data1.txt
$line11 = Get-Content -Path $copyLineFrom -TotalCount 11 | Select-Object -Last 1
$data = Get-Content -Path $fileToUpdate
# replace line 11 (index 10)
if ($data.Count -ge 11) { $data[10] = $line11 }
$data | Set-Content -Path $fileToUpdate
Если вы хотите вставить строку 11 из файла Data1.txt в файл Data2.txt в позиции 11 (и тем самым переместить все строки ниже этой 1 позиции вниз), я бы предложил использовать Перечислите объект и используйте его Insert()
метод:
$copyLineFrom = 'C:\Desktop\Data1.txt'
$fileToUpdate = 'C:\Desktop\Data2.txt'
# get line 11 from Data1.txt
$lineToInsert = Get-Content -Path $copyLineFrom -TotalCount 11 | Select-Object -Last 1
# read Data2.txt in a List object
$data = [System.Collections.Generic.List[string]]::new([string[]](Get-Content -Path $fileToUpdate))
# insert the line at position 11 (index 10)
if ($data.Count -ge 11) { $data.Insert(10, $lineToInsert) }
$data | Set-Content -Path $fileToUpdate