2015-12-06 2 views
1

Я столкнулся с проблемой в своем пакетном скрипте. Я знаю, что/I делает утверждение IF не чувствительным к кеку, но что-то похожее на то, чтобы сделать его нечувствительным к пространству?Создание пробелов в файле .bat

+3

Чтобы убедиться, что это не проблема [XY Problem]] (http://xyproblem.info/), не могли бы вы рассказать нам, что вы пытаетесь выполнить? –

+0

Ввод цитат вокруг выражений, содержащих пробелы, может помочь ... – aschipfl

+1

У меня есть оператор if, настроенный следующим образом: «IF/I»% talk% '==' Howareyou 'GOTO HOWAREYOU "Я хочу сделать это там, где он может распознать это, если вы наберете «Как вы» ... Как мне это сделать? –

ответ

1

Там нет необходимости удалять пробелы. Просто поставить двойные кавычки вокруг оба выражений для сравнения:

if /I "%talk%"=="How are you" goto HOWAREYOU 

двойных кавычки также избежать неприятностей с другими персонажами специальных для командной строки (например, КОСМИЧЕСКИХ, TAB, ,, ;, =, ^, &, (, ), <, >, |).

1

После того, как вы определили переменную talk, вы можете использовать подстановку строк для удаления пробелов. Как следующее:

set "_temp=%talk: =%" 

Затем вы используете переменную %_temp%, чтобы сделать ваше IF сравнение.

Подсказка: двойные кавычки вокруг полной команды set - это просто, чтобы сделать объявление переменной более точным, избегая нежелательных пробелов.

Источник: http://www.dostips.com/DtTipsStringManipulation.php

+0

Спасибо, что сейчас работает –

+2

Я бы порекомендовал вам отредактировать вопрос, чтобы он стал более понятным о том, о чем вы просите. Многие недоразумения в комментариях ... И «Принять» ответ, если он решил вашу проблему. –

1

Вы можете использовать findstr с conditional execution, чтобы выполнить регулярное выражение.

setlocal enabledelayedexpansion 
echo(!talk! | findstr /i "how *are *you" && (
    rem Match. 
) || (
    rem No match. 
) 

Delayed расширение предотвращает преждевременную оценку содержимого переменного (пользователь ввел амперсанд или любой другой). Использование echo( с круглыми скобками предотвращает оценку ввода пользователя /?.

Смежные вопросы