Проверьте наличие пустой строки в командном файле - PullRequest
0 голосов
/ 28 августа 2018

Я изучаю пакетный сценарий, и я скопировал пример проверки на пустое значение:

@echo off 
SET a= 
SET b=Hello 
if [%a%]==[] echo "String A is empty" 
if [%b%]==[] echo "String B is empty "

но я получаю такую ​​ошибку:

D:\Projects\Temp\BatchLearning>Script.bat
]==[] was unexpected at this time.

в чем проблема? Почему это было в руководстве. Это работало в прошлом? Пример из здесь .

UPD:

Я удалил несколько пробелов в конце 2-й, 3-й и 5-й (последней) строки, и теперь все работает, как и ожидалось, что происходит?

1 Ответ

0 голосов
/ 28 августа 2018

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

Справка команды IF , выводимая при запуске в окне командной строки, объясняет синтаксис:

if defined Variable ...
if not defined Variable ...

Это работает, если расширения команд включены по умолчанию при запуске cmd.exe или запуске командного файла.

@echo off
SET "a="
SET "b=Hello"
if not defined a echo String A is empty.
if not defined b echo String B is empty.

Квадратные скобки не имеют значения для команды IF или для командного процессора Windows. Но двойные кавычки имеют одну, поскольку они определяют строку аргумента. Так что возможно также использовать:

@echo off
SET "a="
SET "b=Hello"
if "%a%" == "" echo String A is empty.
if "%b%" == "" echo String B is empty.

Но учтите, что символ двойной кавычки " внутри строкового значения a или b с расширением процессором команд перед выполнением проанализированной командной строки, как это сделано здесь с %a% и %b%, приводит к синтаксическая ошибка командной строки.

Прочтите также ответ по Почему после использования команды 'set var = text' в командной строке не выводится строка с 'echo% var%'? Почему рекомендуется использовать синтаксис set "Variable=Value", чтобы избежать получение присвоенной переменной среды значения с не отображаемыми конечными пробелами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...