Модераторы: bartram, Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа со строками в bat-файлах, переменные среды 
:(
    Опции темы
AgatA
Дата 14.5.2009, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как вместо конкретных чисел (0 и 4) установить переменные среды?
Код

@echo off         
set /p s=s=
set /p str=%s:~0,4%
echo %str%

PM MAIL   Вверх
01MDM
Дата 14.5.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



AgatA
Цитата

Подскажите, пожалуйста, как вместо конкретных чисел (0 и 4) установить переменные среды?


Код

@echo off
setlocal enabledelayedexpansion

set "string=12345"
set "var1=0"
set "var2=4"

set "string=!string:~%var1%,%var2%!"

echo %string%



--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
AgatA
Дата 16.5.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 20.2.2008

Репутация: нет
Всего: нет



Ясно. Спасибо большое!
PM MAIL   Вверх
AlexeyC
Дата 12.10.2009, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.10.2009

Репутация: нет
Всего: нет



Цитата(01MDM @ 14.5.2009,  18:54)
AgatA
Цитата

Подскажите, пожалуйста, как вместо конкретных чисел (0 и 4) установить переменные среды?


Код

@echo off
setlocal enabledelayedexpansion

set "string=12345"
set "var1=0"
set "var2=4"

set "string=!string:~%var1%,%var2%!"

echo %string%

Добрый день.

Пожалуйста подскажите как в bat можно удалить последний символ переменной ?
Например 

set var = string

нужно другой переменной присвоить значение var без последнего символа (g).



PM MAIL   Вверх
01MDM
Дата 12.10.2009, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



Очень просто:
Код

@echo off
set "var1=string"
set "var2=%var1:~0,-1%"
echo %var2%



--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
AlexeyC
Дата 13.10.2009, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.10.2009

Репутация: нет
Всего: нет



Цитата(01MDM @ 12.10.2009,  20:00)
Очень просто:
Код

@echo off
set "var1=string"
set "var2=%var1:~0,-1%"
echo %var2%

Спасибо !
PM MAIL   Вверх
AlexeyC
Дата 17.10.2009, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.10.2009

Репутация: нет
Всего: нет




А почему оператор set не работает внутри циклов for ?

Например:


for %%i in (%string%) DO (
set var=%%i
echo %var%
)

Переменная var не получает значения %%i

системы WinXp, Win2k3.


PM MAIL   Вверх
01MDM
Дата 18.10.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



AlexeyC
Все работает, но нужно включить расширенную обработку комманд:
Код

@echo off
setlocal enabledelayedexpansion

for %%i in (%string%) do (
    set "var=%%i"
    echo !var!
)

Или выносить тело цикла в наружу:
Код

@echo off
for %%i in (%string%) do call:sub "%%i"
goto:eof

:sub
set "var=%~1"
echo %var%



--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
AlexeyC
Дата 20.10.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 12.10.2009

Репутация: нет
Всего: нет



01MDM
Спасибо.
Так действительно работает...но не совсем как мне надо.
Если переменная string содержит пробелы (например set string="\\host\c$\home dir"), то значение string обрезается до первого пробела.


Мне нужно реализовать внутри цикла разбор переменной string.
например:
Код


set string="\\host1\c$\home dir" "\\host2\c$\home dir" "\\host3\c$\home dir"

for %%j in (%string%) do (
тут разбор string
echo %var%
)



в результате переменная var должна последовательно принять значения \\host1\c$\home dir   \\host2\c$\home dir и \\host3\c$\home dir
PM MAIL   Вверх
01MDM
Дата 21.10.2009, 08:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 273
Регистрация: 10.5.2008
Где: Default City

Репутация: 29
Всего: 29



AlexeyC
Твоя переменная разбирается правильно:
Код

@echo off
setlocal enabledelayedexpansion

set string="\\host1\c$\home dir" "\\host2\c$\home dir" "\\host3\c$\home dir"
for %%i in (%string%) do (
    set "var=%%~i"
    echo !var!
)

На выходе:
Код

\\host1\c$\home dir
\\host2\c$\home dir
\\host3\c$\home dir

Лучше обрисуй задачу целиком.




--------------------
Вопросы в личке останутся без ответов.
PM MAIL   Вверх
Vlad705
Дата 20.10.2014, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 20.10.2014

Репутация: нет
Всего: нет



Привет всем!
подскажите, пожалуйста, в следующем вопросе.
При работе со строками в файле, мне необходимо присвоить переменную в которой присутствуют символы "=" и при присвоении код работает некорректно.
(например, set str5=add key="LocalEnterprise") 
Подскажите пожалуйста как можно решить следующую проблему?


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0748 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.