Войти

Показать полную графическую версию : [решено] Как сравнить знак в переменной с кавычкой


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

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

amel27
11-08-2013, 05:47
как вариант, хранить спецсимволы в переменной и использовать EnableDelayedExpansion:

@echo off
setlocal EnableDelayedExpansion

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

if "!$a:~0,1!"=="!$q!" echo First letter is quote!

Foreigner
11-08-2013, 06:15
@echo off
setlocal

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

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

Dragokas
11-08-2013, 16:21
amel27, можете пояснить, почему тот же код без использования DelayedExpansion выдает синтаксическую ошибку ?

Iska
12-08-2013, 00:57
Потому что раскрытие переменных происходит перед разбором строки, и в итоге выходит конструкция вида:
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

mavalog
16-10-2017, 07:20
Есть еще такой вариант:

@echo off
setlocal

set "a="qwerty"

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




© OSzone.net 2001-2012