Показать полную графическую версию : замена строки в текстовом файле.
modzilla
09-10-2017, 19:41
Здравствуйте, интересует вопрос, можно ли bat-ником редактировать Н строку в тексте?
Вот пример файл addy.txt, вот содержимое:
0.0 0 0
248.676865 90912364 53502936
Где вторая строка не должна быть затронута, а первая строка независимо от написанно замениться на указанный мной текст. Соответственно перезаписав файл\сохранив файл?
Я вообще в этом не разбираюсь и решение для такого в интернете не нашел.
решение для такого в интернете не нашел. »
С помощью Power Shell:
How to replace of a specific line number (https://stackoverflow.com/questions/43519871/how-to-replace-of-a-specific-line-number)
Replacing a text at specified line number of a file using powershell (https://stackoverflow.com/questions/6040831/replacing-a-text-at-specified-line-number-of-a-file-using-powershell)
+ Replace text at specific line number with other text using notepad++ (https://superuser.com/questions/1094574/replace-text-at-specific-line-number-with-other-text-using-notepad)
modzilla,
если никаких спецсимволов в строках нет, то можно так:
@echo off
set "f=addy.txt"
echo Введите строку для замены:
set /p str=
<"%f%">$ (echo %str%& (for /f "delims=" %%a in ('more +1') do @echo %%a))& >nul move $ "%f%"
pause
modzilla
09-10-2017, 22:00
@echo off
set "H:/addy.txt"
echo 248.676865 90912364 53502936:
set /p str=
<"%f%">$ (echo %str%& (for /f "delims=" %%a in ('more +1') do @echo %%a))& >nul move $ "%f%"
pause
переменная среды h:/addy.txt не определена
248.676865 90912364 53502936:
переменная среды h:/addy.txt не определена »
Сравните:
set "f=addy.txt" »
set "H:/addy.txt" »
modzilla
09-10-2017, 22:19
я понял. исправил, думал то местонахождение должно быть
@echo off
set "f=addy.txt"
echo 301.049835 90414396 30817092:
set /p str=
<"%f%">$ (echo %str%& (for /f "delims=" %%a in ('more +1') do @echo %%a))& >nul move $ "%f%"
pause
не заменяет
думал то местонахождение должно быть »
Ничто не мешает указать и местонахождение:
set "f=h:\addy.txt"
не заменяет »
Описывайте подробно, что и как делали, что получилось в итоге.
modzilla
09-10-2017, 22:39
в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего
megaloman
09-10-2017, 23:30
alpap, Если надо заменить только первую строку и если всё равно используется вспомогательный файл, можно и без For, и это надёжнее:@Echo Off
Set "Modify=Z:\Box_In\addy.txt"
Set "$=%Modify%.tmp"
Set /P First=Введите строку для замены:
If Not "%First%"=="" (Echo %First%>"%$%"& More +1 "%Modify%">>"%$%"&&Move /Y "%$%" "%Modify%" >nul 2>&1)
modzilla, Результат смотрите в исходном файла - первая строка заменится, если Вы на запрос ввели строку для замены.
в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего »
Это не есть «подробно, что и как делали», коллега.
в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего »
правильно
мою строку
echo Введите строку для замены:
вы заменили на
echo 301.049835 90414396 30817092:
я полагал из побуждений того чтобы не забыть что вводить, такая себе шпаргалка.
но теперь есть подозрение, что происходит (как ему и положено) вывод данной строки, а далее идет приглашение на ввод:
set /p str=
но вы ничего не вводите, а консоль-то ждет, надеется ...
megaloman
10-10-2017, 00:24
modzilla, Если строка не вводится ручками, а жестко прописывается в батнике, то вариант:@Echo Off
Set "Modify=Z:\Box_In\addy.txt"
Set "First=301.049835 90414396 30817092:"
Set "$=%Modify%.tmp"
If Not "%First%"=="" (Echo %First%>"%$%"& More +1 "%Modify%">>"%$%"&&Move /Y "%$%" "%Modify%" >nul 2>&1)
modzilla
10-10-2017, 12:29
@Echo Off
Set "Modify=Z:\Box_In\addy.txt"
Set "First=301.049835 90414396 30817092:"
Set "$=%Modify%.tmp"
If Not "%First%"=="" (Echo %First%>"%$%"& More +1 "%Modify%">>"%$%"&&Move /Y "%$%" "%Modify%" >nul 2>&1)
этот вариант - работает если заменить локацию нахождения файла.
СПАСИБО вам огромное
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.