2016-10-24 7 views
0

Извините за свою формулировку вначале не знаю, как это сформулировать. Мой вопрос У меня есть цикл с 2 переменными, и я хочу, чтобы просто проверить, если количество символов существует пример кода этого:CMD Использование EnableDelayedExpansion с разделительной строкой

if %time:~8,1% EQU "" echo Less than 8 characters 

Мой код в моей голове (что неправильно) выглядит следующим образом

set "AN1=Little String" 
set "AN2=Along String More Character" 
set "AN3=Extra String With A Lot Character" 
set "AN3=SmallSt" 
for /l %%A IN (1,1,28) DO (
    If Not !AN%%!:~8,1 EQU "" (echo String has Less than 8 characters) ELSE (
    If Not !AN%%!:~16,1 EQU "" (echo String has Less than 16 characters) ELSE (
    If Not !AN%%!:~24,1 EQU "" (echo String has Less than 24 characters) ELSE (
    ) 
) 
+0

вы хотите, чтобы вычислить длину чего-то, содержащегося в переменной? –

+0

Я добавляю отступы для целей появления. Если я найду, если char для существует в 8 слоте, я вычитаю отступ, и он выравнивается, найдя точное количество символов, но может быть более убито для моих нужд –

ответ

1

Вы хотите протестировать «массив» строк против порогов длины. Вы логично инвертируете (если 8-й символ не пуст, тогда строка короче 8: неверна), кроме того, что он близок.

Ключ такой: set V=!AN%%A%!. Это позволяет «генерировать» имя переменной из другого. Часть EnableDelayedExpansion полезна для использования другого разделителя, чем %: !, иначе вложение завершится неудачей.

Я привел пример с 5 строками для покрытия всех тестов.

@echo off 

setlocal EnableDelayedExpansion 

set "AN1=Little String" 
set "AN2=Along String More Character" 
set "AN3=Extra String With A Lot Character" 
set "AN4=SmallSt" 
set "AN5=Along String More " 

for /l %%A IN (1,1,5) DO (

    set V=!AN%%A%! 

    If "!V:~8,1!"=="" (echo "!V!" String has Less than 8 characters) else (
    If "!V:~16,1!"=="" (echo "!V!" String has Less than 16 characters) else (
    If "!V:~24,1!"=="" (echo "!V!" String has Less than 24 characters) 
) 
    ) 
) 

Результат:

"Little String" String has Less than 16 characters 
"SmallSt" String has Less than 8 characters 
"Along String More " String has Less than 24 characters 
Смежные вопросы