1 (изменено: Khaines, 2015-10-01 13:06:39)

Тема: CMD/BAT: Перенос из test1.txt в text2.txt

Добрый день всем.
не могу додумать, как вставить из test1.txt

(@echo off
chcp 1251
cd %1>test1.txt) 

(в нем одна строка,которая всегда меняется (путь файла),к примеру

 D:\1\Новая папка

в test2.txt (

@echo off &setlocal enableextensions

Set "file=test2.txt"
Set "find=C:\GIVC\Mshp"
Set "repl= ???"

move /y "%file%" "%file%.bak"
setlocal disabledelayedexpansion
for /f "tokens=1,* delims=]" %%a in ('type "%file%.bak" ^|find /n /v ""') do (
  set "str=%%b"
  (if defined str (
    call set "str=echo:%%str:%find%=%repl%%%"
    for /f "delims=" %%a in ('echo:"%%str%%"') do %%~a
  ) else echo:) >> "%file%"
)

в строку

Set "repl= ???"

вместо "???"
помогите пожалуйста, не очень силен в батниках

2

Re: CMD/BAT: Перенос из test1.txt в text2.txt

А зачем усложнять себе жизнь циклами? Если же нормальные консольные заменялки: gsar, TxtReplace, ssed, nhrplc.

3

Re: CMD/BAT: Перенос из test1.txt в text2.txt

я не знаю как работают эти варианты(

4

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Так там очень просто разобраться. Посмотрите мануалы к ним с примерами. В итоге хватит одной cmd-строки (исправить, переименовать с ren) без батника.

5 (изменено: Khaines, 2015-10-01 15:45:17)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

мне нужно чтобы без моей помощи это менялось, так же как и батником получиться?
дело в том,чтобы когда инсталлятор сделает своё дело, запустился батник и поменял в файле путь.
Возможно ли это так сделать?

6

Re: CMD/BAT: Перенос из test1.txt в text2.txt

В зависимости от возможностей инсталлятора. Если он позволяет вызвать в нужный момент приложение, то почему нет?

7 (изменено: Khaines, 2015-10-01 16:23:27)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

так что тогда посоветуете, этот батник доделать как нить, или через заменялки придумывать?)Если могете в этом, помогите

8

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Я ещё толком задания не понял. Как-то коряво события сгруппированы. Строка меняется по номеру или по содержанию?

9 (изменено: Khaines, 2015-10-01 16:49:28)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

по содержанию...
попробую ещё раз описать проблему...
есть папка с файлами,в которой нужно поменять путь в одном из файлов,чтобы запустилось программа....дела в том что путь заранее не известен....как то так
я предположил, что если создать test1.txt в котором храниться  путь файла, потом эту строку заменить в другом test2.txt и тогда запуститься программа, независимо от того что заранее не известен путь....или я не так думаю?

10 (изменено: Khaines, 2015-10-01 17:24:07)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

вроде как получилось вот так сделать,

nhrplc.exe -spt:"C:\GIVC" -f:adres.txt CLIENT_IB.ini

но она вот так заменяет

;MAIN_ALIAS=10.1.9.36:d:\data\pm.gdb
MAIN_ALIAS=D:\Работа\бат\1
\Mshp\DATA\DB.GDB
;MAIN_ALIAS=10.1.9.36:D:\DHP\OP\NEW_OP.GDB

теперь вопрос, как убрать пробел или соединить в одну строку что бы было так?

;MAIN_ALIAS=10.1.9.36:d:\data\pm.gdb
MAIN_ALIAS=D:\Работа\бат\1\Mshp\DATA\DB.GDB
;MAIN_ALIAS=10.1.9.36:D:\DHP\OP\NEW_OP.GDB

11

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Ничего не понял. Зачем вообще 2 txt-файла? Как связан 2 txt-файл с запуском?
В какой момент, кем/чем перемещается файл? Если путь неизвестен заранее, то откуда же инсталлятор узнает о нём?

P.S.: Пишите грамотней, хотя бы с заглавными и точками. Тут так принято.

12 (изменено: Khaines, 2015-10-01 17:48:54)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

В инсталляторе указывается путь...устанавливается программа...установилась. В папке программы есть батник, который находит путь...записывает его. С помощью

nhrplc.exe -spt:"C:\GIVC" -f:adres.txt CLIENT_IB.ini

у меня получилось вставить путь в файл запуска программы. Это то что у меня не получалось, теперь получилось, я доволен). Но возникло проблема в том, что он вставляется вот так

MAIN_ALIAS=D:\Работа\бат\1
\Mshp\DATA\DB.GDB

, а должен быть вот так, для того чтобы правильно прописался путь и запустилось программа

MAIN_ALIAS=D:\Работа\бат\1\Mshp\DATA\DB.GDB

, вопрос, как вставить в одну строку?

13

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Так, стоп. Теперь ini вылез. Если нужно менять значение ключа, то для этого есть спец. утилиты (inifile, iniman, iniTool).
-spt для nhrplc - это что-то с чем-то. Ключ p тут какую роль играет? И где тут ключ -t со строкой замены, собственно?

И вообще удивительно, что выбор пал на самую большую среди предложенных утилиту. )

14

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Что Вы пишите один понять не могут уже двое. Вам нужен скрипт, который что-то делает с тем, что имеется и создает что-то новое.

1. покажите, что должно быть перед запуском скрипта (имя файла и его содержимое)
2. покажите, что должно получится после рабты скрипта (имя файла и его содержимое)
3. не пишите Ваши предположения как оно должно работать. В противном случае - делайте всё сами.

( 2 * b ) || ! ( 2 * b )

15

Re: CMD/BAT: Перенос из test1.txt в text2.txt

не одну из предложенных утилит я не знаю, выбрал наугад)

16 (изменено: Khaines, 2015-10-01 18:24:55)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

1.есть файл CLIENT_IB.ini и в нем

;MAIN_ALIAS=10.1.9.36:d:\data\pm.gdb
MAIN_ALIAS=C:\GIVC\Mshp\DATA\DB.GDB
;MAIN_ALIAS=10.1.9.36:D:\DHP\OP\NEW_OP.GDB

2.должно быть так CLIENT_IB.ini и в нем

;MAIN_ALIAS=10.1.9.36:d:\data\pm.gdb
MAIN_ALIAS=D:\Работа\бат\1\Mshp\DATA\DB.GDB
;MAIN_ALIAS=10.1.9.36:D:\DHP\OP\NEW_OP.GDB

т.е. менять путь должен,которого заранее мы не знаем, а знаем только тогда, когда прошла инсталляция

17 (изменено: Flasher, 2015-10-01 18:19:47)

Re: CMD/BAT: Перенос из test1.txt в text2.txt

inifile CLIENT_IB.ini [section] MAIN_ALIAS=D:\Работа\бат\1\Mshp\DATA\DB.GDB
Так?

18

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Я извиняюсь, но можете пояснить что вы написали?

19

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Команду установки нового значения ключа с помощью утилиты по ссылке. Секция помечена красным, т.к. не указана.

20

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Любую задачу можно решить разными способами.


gawk -v str="D:\\\Работа\\\бат\\\1\\\Mshp\\\DATA\\\DB.GDB" "$0 ~ /^MAIN_ALIAS=/ { $0 = """MAIN_ALIAS="""str; }; { print; }" CLIENT_IB.ini

sed "/^MAIN_ALIAS=/s/=.*/=D:\\\Работа\\\бат\\\1\\\Mshp\\\DATA\\\DB.GDB/" CLIENT_IB.ini

perl -pe "/^MAIN_ALIAS=/ && s/(?<==)(.*)/D:\\Работа\\бат\\1\\Mshp\\DATA\\DB.GDB/" CLIENT_IB.ini

Важно заметить, что awk/gawk/sed требуют утроение обратных слешей. Perl - только удвоение. Но все это к счастью решается средствами интерпретатора.

Ещё можно на jscript/vbscript.

( 2 * b ) || ! ( 2 * b )

21

Re: CMD/BAT: Перенос из test1.txt в text2.txt

Но всё же проще для ini брать соотв. редакторы. В копилку без консоли - nircmd (команда inisetval), TCFS2 (фунция set_ini).