Показать полную графическую версию : [решено] Как сравнить знак в переменной с кавычкой
Dragokas
11-08-2013, 01:27
Нужно определить, является ли первый символ в значении переменной - знаком кавычки.
Значение в переменной может быть абсолютно любое, может даже с одним символом кавычки.
Помогите, пожалуйста, правильно составить.
как вариант, хранить спецсимволы в переменной и использовать 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 выдает синтаксическую ошибку ?
Потому что раскрытие переменных происходит перед разбором строки, и в итоге выходит конструкция вида:
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
Есть еще такой вариант:
@echo off
setlocal
set "a="qwerty"
if "%a:~0,1%%a:~0,1%" == """" echo the first simbol is `"`
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.