Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] как добавить несколько строк в кучу *.txt файлов (http://forum.oszone.net/showthread.php?t=352136)

minutka15 16-10-2022 19:20 2994292

как добавить несколько строк в кучу *.txt файлов
 
Имеется более 100 текстовых файлов в C:\Folder\*.txt
В них имеется текст максимум до 7 строчки, в низу все пусто.
Нужно добавить в 8ю и 9ю строчку определенный текст
В нужной директории и в нужном файле закидывая в ту папку батник и запуская его там я добавлял нужную мне строчку (строчки) таким путем

Код:

powershell "$f=(Get-Content file.txt);$f[8]='My-New-Text';$f | set-content file.txt"
таким путем я добавляю My-New-Text в 8ю строчку.
Как переделать скрипт что-бы он обработал таким путем все *.txt файлы в (C:\Folder\*.txt)
Буду очень признателен за помощь

DJ Mogarych 16-10-2022 19:56 2994293

Код:

"Восьмая строка
Девятая строка" |Add-Content "C:\Folder\*.txt"


minutka15 16-10-2022 20:10 2994294

Цитата:

Девятая строка" |Add-Content "C:\Folder\*.txt"
Речь не о 9й строчке

Цитата:

Как переделать скрипт что-бы он обработал таким путем все *.txt файлы в (C:\Folder\*.txt)
У текстовых файлов разные имена
а что-бы просто добавить нужные строчки в известном файле можно просто продублировать

Код:

powershell "$f=(Get-Content file1.txt);$f[8]='тут первый текст';$f | set-content file1.txt"
powershell "$f=(Get-Content file1.txt);$f[9]='тут второй текст';$f | set-content file1.txt"
powershell "$f=(Get-Content file1.txt);$f[10]='тут третий текст';$f | set-content file1.txt"

вопрос был в другом

DJ Mogarych 16-10-2022 20:32 2994297

В моём примере добавляется сразу две строки и сразу во все файлы.

minutka15 17-10-2022 03:11 2994320

DJ Mogarych,
Цитата:

В моём примере добавляется сразу две строки и сразу во все файлы.
Ничего не добавляется:

Нашел рабочий метод. Может кому понадобится...

Код:

Get-ChildItem C:\Folder\*.txt |             
  ForEach-Object {                           
    $f = ($_ | Get-Content -ReadCount 0)     
    $f[7] = 'я восьмой текст'; $f[8] = 'я девятый текст'             
    Set-Content $_.FullName $f               
  }

тем самым заполняем все текстовые файлы из C:\Folder

Код:

я восьмой текст
я девятый текст


Еще один код который можно использовать на все случаи жизни

Код:

Get-ChildItem -Path 'C:\Folder' -Filter '*.txt' | ForEach-Object {
$LineIndex = 0
$FileContent = Switch -File $_.FullName {Default {
$LineIndex++
If ($LineIndex -Eq 8) {@'
тут строка 8
тут строка 9
тут строка 10
тут строка 11
тут строка 12  # и т.д
'@}
$_}}
Set-Content -Path $_.FullName -Value $FileContent}


Только следует обратить внимание на то, что эти оба варианта не вставляют новые строки,
а только обновляют (меняют) существующие.


Время: 02:31.

Время: 02:31.
© OSzone.net 2001-