Я думаю, что проблема ОП заключалась в том, что он хочет ОБА следующего:
- Передать параметр, который может содержать пробелы
- Проверить, отсутствует ли параметр
Как уже упоминалось в нескольких постерах, для передачи параметра, содержащего пробелы, фактическое значение параметра необходимо заключить в двойные кавычки.
Чтобы проверить, отсутствует ли параметр, я всегда изучал метод:
if "%1" == ""
Однако, если фактический параметр указан в кавычках (как и должно быть, если значение содержит пробелы), это становится
if ""actual parameter value"" == ""
, который вызывает «неожиданную» ошибку. Если вы вместо этого используете
if %1 == ""
тогда ошибка больше не возникает для указанных значений. Но в этом случае тест больше не работает , когда значение отсутствует - оно становится
if == ""
Чтобы исправить это, используйте любые другие символы (кроме тех, которые имеют особое значение для DOS) вместо кавычек в тесте:
if [%1] == []
if .%1. == ..
if abc%1xyz == abcxyz