Могу ли я получить те же результаты с меньшим количеством кода? Код ищет в файле sample.bat строки AROUND LINE {1-9999} и LINE2 {1-9999} и заменяет {1-9999} на {номер строки}, на котором находится код.
sample.bat:
AROUND LINE 262
LINE2 1964
Старый код:
gc $env:temp\sample.bat | foreach -Begin {$lc = 1} -Process {
$_ -replace "AROUND LINE \d*", "AROUND LINE $lc";
$lc += 1
} | Out-File -Encoding Ascii $env:temp\results.bat
(gc $env:temp\results.bat) | foreach -Begin {$lc = 1} -Process {
$_ -replace "LINE2 \d*", "LINE2 $lc";
$lc += 1
} | Out-File -Encoding Ascii $env:temp\results.bat
Текущий код:
(gc $env:temp\sample.bat) | foreach -Begin {$lc = 1} -Process {
$_ -replace "AROUND LINE \d*", "AROUND LINE $lc";
$lc += 1
} | foreach -Begin {$lc = 1} -Process {
$_ -replace "LINE2 \d*", "LINE2 $lc";
} | Out-File -Encoding Ascii $env:temp\sample.bat
Ожидаемые результаты:
AROUND LINE 1
LINE2 2
Фактические результаты:
AROUND LINE 1
LINE2 2