Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Windows [игнор отключен] [закрыт для гостей] / Bat замена символа в переменной / 7 сообщений из 7, страница 1 из 1
08.11.2012, 13:10
    #38030110
mmm-crash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
Доброго времени суток!

Есть два файла:

1. config.ini:

Код: vbnet
1.
2.
3.
host=hhhhhh
port=1234
objects=("home/123/qw" "home/1234/qwr" "home/1235/qwrt")



2. backup.bat:

Код: vbnet
1.
2.
3.
4.
5.
6.
@echo off
setlocal
set sFile=config.ini
for /f "useback tokens=1,2 eol=; delims==" %%i in ("%sFile%") do set %%i=%%j
for %%i in %objects% do (-host "%host%" -port "%port%" -objects %%i)
endlocal



Сейчас он работает правильно - для каждого объекта из objects генерит свою команду.
Но встала задача добавить в создаваемую команду еще одно условие: -package, в которое должно передаваться значение из objects, с замененными символами слеша на нижнее подчеркивание.
Для данного примера должен появиться следующий список команд:

-host "hhhhhh" -port "1234" -objects "home/123/qw" -package "home_123_qw"
-host "hhhhhh" -port "1234" -objects "home/1234/qwr" -package "home_1234_qwr"
-host "hhhhhh" -port "1234" -objects "home/1235/qwrt" -package "home_1235_qwrt"

Подскажите, пожалуйста, как это можно сделать!
...
Рейтинг: 0 / 0
08.11.2012, 13:26
    #38030142
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
mmm-crash,

вот так замена строка делается:
Код: powershell
1.
2.
3.
4.
set str=teh cat in teh hat
echo.%str%
set str=%str:teh=the%
echo.%str%


Взял с http://www.dostips.com/DtTipsStringManipulation.php
...
Рейтинг: 0 / 0
08.11.2012, 13:31
    #38030155
mmm-crash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
bazile,

это да, только не получается внедрить это в сам скрипт
...
Рейтинг: 0 / 0
08.11.2012, 14:00
    #38030229
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
mmm-crash,

Здесь нужно использовать механизм delayed expansion :
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
@echo off
setlocal EnableDelayedExpansion
set sFile=config.ini
for /f "useback tokens=1,2 eol=; delims==" %%i in ("%sFile%") do set %%i=%%j
for %%i in %objects% do (
	set object=%%i
	-host "%host%" -port "%port%" -objects %%i -package !object:/=_!
)
endlocal
...
Рейтинг: 0 / 0
08.11.2012, 14:05
    #38030241
mmm-crash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
bazile,

Работает!) Спасибо вам большое!!
...
Рейтинг: 0 / 0
08.11.2012, 15:54
    #38030521
mmm-crash
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
bazile,

а не подскажете, как можно сделать двойную замену - заменить не только знак /, но и знак " в списке objects=("home/123/qw" "home/1234/qwr" "home/1235/qwrt")
...
Рейтинг: 0 / 0
08.11.2012, 16:11
    #38030545
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Bat замена символа в переменной
mmm-crash,

через дополнительную переменную можно:
Код: powershell
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
@echo off
setlocal EnableDelayedExpansion
set sFile=config.ini
for /f "useback tokens=1,2 eol=; delims==" %%i in ("%sFile%") do set %%i=%%j
for %%i in %objects% do (
	set object=%%i
	set object=!object:"='!
	set package=!object:/=_!
	-host "%host%" -port "%port%" -objects !object! -package !package!
)
endlocal
...
Рейтинг: 0 / 0
Форумы / Windows [игнор отключен] [закрыт для гостей] / Bat замена символа в переменной / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]