0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 27
1

Переменной не присваивается новое значение при использовании оператора IF с заключённым в скобки блоком команд

15.04.2016, 08:54. Показов 1367. Ответов 5
Метки нет (Все метки)

Здравствуйте. Подскажите пожалуйста, "в каком месте спрятался кот"?
Суть проблемы:
Windows Batch file
1
2
if %v% LCC 10 (set/a v+=1)
echo %v% > D:\1.txt
Работает корректно и записывает на единицу выше.

А вот так:
Windows Batch file
1
2
3
4
if %v% LCC 10 (
set/a v+=1
echo %v% > D:\1.txt
)
Работает НЕ Корректно и не записывает новое значение.
На C++ аналогичное работает!

Так же интересно, почему не работает это:
Windows Batch file
1
2
3
4
5
6
if %v% LCC 10 (
echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js 
echo WSHShell.Popup(""); >> %temp%\mes.js 
start %temp%\mes.js 
deltree /y %temp%\mes.js 
)
Тут как не старайся, А сообщение появится даже если условие не выполнено.
Подозреваю, что ошибка кроется в том, что тут тоже есть скобки, но они же закрыты, тогда не ясно где моя ошибка, ткните пожалуйста носом?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2016, 08:54
Ответы с готовыми решениями:

Не присваивается новое значение переменной
Задание: Запрашиваются 10 чисел (целые значения от 0 до 1000). Опишите алгоритм, позволяющий найти...

Значение присваивается переменной, но не присваивается TexBox
есть функция public static void ControllerInfo(string name, ref string customer, ref int addres)...

Ошибка "Непредвиденное появление" при использовании оператора условного выполнения команд
Приветствую. Есть некоторый код, который правильно выполняется, но вот функция :EXIT работает...

Присваивает переменной не то значение (при x=y=z=0, n=4, но почему-то переменная a, которой присваивается n + 0,006 )
#include <stdio.h> #include <stdlib.h> #include <locale.h> #include <math.h> int main() {...

5
10543 / 5506 / 864
Регистрация: 07.04.2013
Сообщений: 15,660
15.04.2016, 09:08 2
Цитата Сообщение от Shandera Посмотреть сообщение
Работает корректно
А вы в этом уверены ? Что за LCC ?
1
3446 / 1984 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
15.04.2016, 10:07 3
Лучший ответ Сообщение было отмечено ComSpec как решение

Решение

Цитата Сообщение от Shandera Посмотреть сообщение
На C++ аналогичное работает!


"Плюсовикам" трудно разбираться в логике и синтаксисе Batch...

Вот так правильно:

1)

Windows Batch file
1
2
3
4
5
6
7
8
9
@echo off
 
set v=0
 
setlocal enabledelayedexpansion
if %v% lss 10 (
    set/a v+=1
    echo !v!>"D:\1.txt"
)
;

2)

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
 
set v=0
 
if %v% lss 10 (
    >"%temp%\mes.js" (
        echo var WSHShell = WScript.CreateObject("WScript.Shell"^);
        echo WSHShell.Popup(""^);
    )
    "%temp%\mes.js"
    del "%temp%\mes.js"
)
.
1
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 27
15.04.2016, 13:47  [ТС] 4
Цитата Сообщение от ComSpec Посмотреть сообщение
setlocal enabledelayedexpansion
О божешь ты мой. Это что то страшное! )))
Цитата Сообщение от vavun Посмотреть сообщение
А вы в этом уверены ?
Ну работает же. ))

Подскажите простым человеческим, в чем отличия %v% от !v! ???

Добавлено через 10 минут
Цитата Сообщение от vavun Посмотреть сообщение
Что за LCC ?
А, опечатался. LSS )))

Добавлено через 47 секунд
Цитата Сообщение от ComSpec Посмотреть сообщение
"Плюсовикам" трудно разбираться в логике и синтаксисе Batch
И не говорите. Но очень интересно! И полезно!

Добавлено через 13 минут
И если можно, то чем отличается путь в "" от пути без ""? Работает и так и так. В моем случае.
0
3446 / 1984 / 635
Регистрация: 26.02.2014
Сообщений: 1,457
15.04.2016, 17:52 5
Лучший ответ Сообщение было отмечено Shandera как решение

Решение

Цитата Сообщение от Shandera Посмотреть сообщение
Подскажите простым человеческим, в чем отличия %v% от !v! ???


Смотрите практические примеры случаев, когда нужно использовать SETLOCAL ENABLEDELAYEDEXPANSION и, соответственно, восклицательные знаки в качестве символов расширения (раскрытия, если "простым" языком) переменных.





Цитата Сообщение от Shandera Посмотреть сообщение
И если можно, то чем отличается путь в "" от пути без ""? Работает и так и так. В моем случае.


Да, работает, но если в пути будут пробелы и специальные символы, то запись без кавычек в большинстве случаев работать не будет.

Поэтому советую заключать пути или имена файлов и каталогов в кавычки всегда, так как это правило "хорошего тона".
1
0 / 0 / 0
Регистрация: 17.08.2015
Сообщений: 27
15.04.2016, 17:59  [ТС] 6
ComSpec, Спасибо.
Самый лучший форум во все интернете!!!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2016, 17:59

Строка string. Не присваивается новое значение
Есть строка: string str_in = "A"; Она используется в созданной мной функцией как один из...

Задание и раскрытие переменной внутри блока команд, заключённого в скобки
Батник: Set /p a=Введите echo Вы ввели %a% pause срабатывает правильно: запрашивается...

Не присваивается значение переменной
private void button1_Click(object sender, EventArgs e) { double OhmMMcl=0; ...

Значение не присваивается переменной
Доброго времени суток. Подскажите пожалуйста, как и почему происходит такое, что переменной не...

Не присваивается значение переменной
Доброго времени суток! В общем, захотел создать змейку. Да, сейчас он выглядит не очень(зато код...

Не присваивается значение переменной
Всем доброго дня. Какой то бред твориться с кодом. Есть глобальная переменная к которой присваиваю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.