С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/121: Рейтинг темы: голосов - 121, средняя оценка - 4.69
4 / 4 / 0
Регистрация: 16.10.2014
Сообщений: 136
1

Пустая переменная выводится как %переменная%

24.05.2018, 06:45. Показов 22168. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Когда %var% ещё пустая,
Windows Batch file
1
echo %var%
выдаёт не пустоту (или "Режим вывода команд на экран (ECHO) отключен"), а вот так выдаёт, %var%
Так и должно быть?
Это не даёт возможность с помощью if определить, что переменная пустая.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2018, 06:45
Ответы с готовыми решениями:

Как проверить, что переменная является числом?
Добрый день, уважаемые. Скучая на работе и просто решив побаловаться BAT, я написал небольшой...

Переменная как часть имени другой переменной
Всем привет! Вообще есть цикл for со счётчиком %%i. В самом цикле, этот счётчик должен становиться...

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

Robocopy как переменная в команде powershell
Хочу написать скрипт, который будет копировать например папку документы в компьютерах сотрудников в...

13
12 / 13 / 2
Регистрация: 14.12.2015
Сообщений: 185
24.05.2018, 13:45 2
Windows Batch file
1
If defined var
Не определена (здесь без знаков % %)
Хотелось бы посмотреть в контексте
0
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
24.05.2018, 14:00 3
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
  setlocal
    set "var=" % rem : какбы объявили переменную
    rem на самом деле переменная var не объявлена, следовательно будет
    rem выведено "Режим вывода команд на экран (ECHO) отключен"
    echo %var%
    rem убать пердупреждение можно так
    echo.%var%
    rem или так
    echo:%var%
    rem проверить налиие переменной (была ли объявлена) можно так
    if defined var (echo:Gotcha^!) else (echo:WTF?)
    rem проверить на пустоту
    if /i "%var%" equ "" echo:Oops^! I did it again...
    rem проверять на пустоту можно и так
    if /i [%var%] equ [] echo:Damned^! The variable is still unexisted.
  endlocal
exit /b
1
4 / 4 / 0
Регистрация: 16.10.2014
Сообщений: 136
31.05.2018, 07:36  [ТС] 4
В том-то и дело, что
Windows Batch file
1
if /i "%var%" equ "" echo:Переменная пустая
у меня на нескольких компах не срабатывает, т.к.
Windows Batch file
1
echo %var%
так и выдаёт:
%var%
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
31.05.2018, 09:53 5
покажите скришот запускаемой команды и результата в окне cmd.
0
4 / 4 / 0
Регистрация: 16.10.2014
Сообщений: 136
05.06.2018, 12:35  [ТС] 6
Пустая переменная выводится как %переменная%
0
4 / 4 / 0
Регистрация: 16.10.2014
Сообщений: 136
05.06.2018, 12:37  [ТС] 7
Название: var.jpg
Просмотров: 258

Размер: 12.4 Кб
0
4336 / 2126 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
05.06.2018, 15:08 8
даже не знаю, если бы % удваивались то везде, такой вариант не дает результат как у вас
Windows Batch file
1
2
3
4
5
6
cmd /v /c @echo on
cmd /v /c set var=123
cmd /v /c echo %%var%%
cmd /v /c set var=
cmd /v /c echo %%var%%
cmd /v /c pause
не могу смоделировать такое же.

Добавлено через 9 минут
а ставили что-нибудь из unix и какая win - пиратка?
0
Покинул форум
3672 / 1483 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
05.06.2018, 15:52 9
Цитата Сообщение от alpap
а ставили что-нибудь из unix и какая win - пиратка?
какой смысл гадать?! Проще цепануться WinDbg к процессу и посмотреть в чем проблема.
0
Любознательный
6572 / 1941 / 335
Регистрация: 10.03.2016
Сообщений: 4,471
05.06.2018, 18:45 10
Цитата Сообщение от rsuan Посмотреть сообщение
Так и должно быть?
Да, так работает парсер непосредственно в строке ввода консоли (не в сценарии, это важно). Ибо если переменной не существует, то она, собственно и не раскрывается, а командой echo выводится набор символов со знаком процентов в начале и в конце.

Цитата Сообщение от rsuan Посмотреть сообщение
Это не даёт возможность с помощью if определить, что переменная пустая.
Windows Batch file
1
if defined var (echo yes) else (echo no)
1
12 / 13 / 2
Регистрация: 14.12.2015
Сообщений: 185
05.06.2018, 19:09 11
Частые ошибки. Пункт №14. Наиболее частые ошибки, заметки особенностей программинга BAT файлов, баги интерпретатора*

Не критичная ситуация.
Можно поставить точку перед echo. или так @echo.
0
6333 / 2760 / 1071
Регистрация: 06.06.2017
Сообщений: 9,388
07.06.2018, 17:38 12
rsuan, а где у вас встречается пустая переменная?
Можно же брать какой-то ненужный символ и удалять:
Windows Batch file
1
2
3
set var=?
if "%var:?=%" == "" echo Переменная var пуста.
echo Здесь^>%var:?=%^<ничего нет.
0
4 / 4 / 0
Регистрация: 16.10.2014
Сообщений: 136
08.06.2018, 04:49  [ТС] 13
FlasherX, у меня значение переменной заранее неизвестно, поэтому нельзя указать подстроку, какую из неё удалять.
Но если
Цитата Сообщение от YuS_2 Посмотреть сообщение
так работает парсер непосредственно в строке ввода консоли (не в сценарии
тогда не страшно, т.к. нужно в батнике.
0
6333 / 2760 / 1071
Регистрация: 06.06.2017
Сообщений: 9,388
08.06.2018, 23:56 14
rsuan, я написал про ненужный символ, а не подстроку. Например, дял путей/имён файлов, как в приведённом примере.
0
08.06.2018, 23:56
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.06.2018, 23:56
Помогаю со студенческими работами здесь

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

Если у меня переменная int, как указать на то что она пустая?
Суть вопроса вот в чём. У меня есть несколько текстбоксов, и при вводе в них определённых чисел и...

Строковая переменная выводится как массив.
Есть два файла. Первый: &lt;?php function word() { $words = array( ...

Пустая переменная в с++
При компиляции выдает ошибку, требуя, чтобы я задал переменной miles какое-нибудь значение. Как...

Пустая переменная
procedure Tu1.N1Click(Sender: TObject); var st: string; begin...

Пустая переменная
procedure TMainForm.DirectoryListBoxChange(Sender: TObject); var _count_cdw, _count_frw, ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru