Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как сравнить знак в переменной с кавычкой (http://forum.oszone.net/showthread.php?t=265940)

Dragokas 11-08-2013 01:27 2199722

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

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

amel27 11-08-2013 05:47 2199745

как вариант, хранить спецсимволы в переменной и использовать 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 2199746

Код:

@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 2199949

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

Iska 12-08-2013 00:57 2200104

Потому что раскрытие переменных происходит перед разбором строки, и в итоге выходит конструкция вида:
Код:

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 2770886

Есть еще такой вариант:
Код:

@echo off
setlocal

set "a="qwerty"

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



Время: 18:14.

Время: 18:14.
© OSzone.net 2001-