Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сравнить знак в переменной с кавычкой

Ответить
Настройки темы
CMD/BAT - [решено] Как сравнить знак в переменной с кавычкой

Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


Нужно определить, является ли первый символ в значении переменной - знаком кавычки.
Значение в переменной может быть абсолютно любое, может даже с одним символом кавычки.

Помогите, пожалуйста, правильно составить.

Отправлено: 01:27, 11-08-2013

 

Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


как вариант, хранить спецсимволы в переменной и использовать EnableDelayedExpansion:

Код: Выделить весь код
@echo off
setlocal EnableDelayedExpansion

set "$q=""
set "$a="123"

if "!$a:~0,1!"=="!$q!" echo First letter is quote!
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:47, 11-08-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1754
Благодарности: 965

Профиль | Цитировать


Код: Выделить весь код
@echo off
setlocal

set "a="qwerty"
set "b=%a:~0,1%"
set "b=%b:"=%"

if not defined b echo the first simbol is `"`

Последний раз редактировалось Foreigner, 11-08-2013 в 07:30.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:15, 11-08-2013 | #3


Пользователь


Сообщения: 148
Благодарности: 39

Профиль | Сайт | Отправить PM | Цитировать


amel27, можете пояснить, почему тот же код без использования DelayedExpansion выдает синтаксическую ошибку ?

-------
Alex Dragokas


Отправлено: 16:21, 11-08-2013 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Потому что раскрытие переменных происходит перед разбором строки, и в итоге выходит конструкция вида:
Код: Выделить весь код
if """==""" (…) else (…)
на которой интерпретатор и спотыкается. В обратном же случае, сначала делается разбор «if», затем уже происходит отложенное раскрытие переменных окружения.
читать дальше »
По тому же самому принципу не удаётся напрямую использовать отложенное раскрытие переменных окружения, например, в предикатах «skip» и «tokens» команды «for /f» — к моменту разбора они ещё не будут раскрыты:
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set /a iCount = 3

for /f "skip=!iCount!" %%i in (0001.txt) do echo %%i

endlocal
exit /b 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:57, 12-08-2013 | #5


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


Есть еще такой вариант:
Код: Выделить весь код
@echo off
setlocal

set "a="qwerty"

if "%a:~0,1%%a:~0,1%" == """" echo the first simbol is `"`

Отправлено: 07:20, 16-10-2017 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Как сравнить знак в переменной с кавычкой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. NiOl Скриптовые языки администрирования Windows 7 31-01-2019 19:58
Разное - Как убрать восклицательный знак с значка подлючения к сети? Fokus Microsoft Windows 7 9 13-06-2010 22:30
MySQL - Как сравнить числа приблизительно xstaford Программирование и базы данных 4 27-11-2008 09:58
как сравнить два звуковых файла alexra Видео и аудио: обработка и кодирование 8 31-07-2007 00:42
Как протестировать и сравнить 2 модема? grifius Хочу все знать 1 06-12-2004 12:37




 
Переход