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

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

modzilla 09-10-2017 19:41 2769428

замена строки в текстовом файле.
 
Здравствуйте, интересует вопрос, можно ли bat-ником редактировать Н строку в тексте?

Вот пример файл addy.txt, вот содержимое:
Код:

0.0 0 0
248.676865 90912364 53502936

Где вторая строка не должна быть затронута, а первая строка независимо от написанно замениться на указанный мной текст. Соответственно перезаписав файл\сохранив файл?

Я вообще в этом не разбираюсь и решение для такого в интернете не нашел.

Казбек 09-10-2017 20:38 2769438

Цитата:

Цитата modzilla
решение для такого в интернете не нашел. »

С помощью Power Shell:+ Replace text at specific line number with other text using notepad++

alpap 09-10-2017 21:08 2769447

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 2769454

Код:

@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:

Iska 09-10-2017 22:03 2769455

Цитата:

Цитата modzilla
переменная среды h:/addy.txt не определена »

Сравните:
Цитата:

Цитата alpap
set "f=addy.txt" »

Цитата:

Цитата modzilla
set "H:/addy.txt" »


modzilla 09-10-2017 22:19 2769458

я понял. исправил, думал то местонахождение должно быть
Код:

@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

не заменяет

Iska 09-10-2017 22:33 2769460

Цитата:

Цитата modzilla
думал то местонахождение должно быть »

Ничто не мешает указать и местонахождение:
Код:

set "f=h:\addy.txt"
Цитата:

Цитата modzilla
не заменяет »

Описывайте подробно, что и как делали, что получилось в итоге.

modzilla 09-10-2017 22:39 2769462

в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего

megaloman 09-10-2017 23:30 2769476

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, Результат смотрите в исходном файла - первая строка заменится, если Вы на запрос ввели строку для замены.

Iska 09-10-2017 23:32 2769480

Цитата:

Цитата modzilla
в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего »

Это не есть «подробно, что и как делали», коллега.

alpap 10-10-2017 00:17 2769489

Цитата:

Цитата modzilla
в окошке пишет только 301.049835 90414396 30817092: и всё, больше ничего »

правильно

мою строку
Код:

echo Введите строку для замены:
вы заменили на
Код:

echo 301.049835 90414396 30817092:
я полагал из побуждений того чтобы не забыть что вводить, такая себе шпаргалка.
но теперь есть подозрение, что происходит (как ему и положено) вывод данной строки, а далее идет приглашение на ввод:
Код:

set /p str=
но вы ничего не вводите, а консоль-то ждет, надеется ...

megaloman 10-10-2017 00:24 2769491

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 2769564

Цитата:

@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)
этот вариант - работает если заменить локацию нахождения файла.
СПАСИБО вам огромное


Время: 16:26.

Время: 16:26.
© OSzone.net 2001-