Я предлагаю использовать этот код:
@echo off
setlocal EnableDelayedExpansion
:package
rem Predefine variable packageName with a single double quote as value.
rem This value is kept if the user just hits RETURN or ENTER on prompt.
rem The single double quote is removed 2 command lines below if the user
rem does not enter anything or it is overwritten by user entered string.
set "packageName=""
set /P "packageName=Set package name: "
rem Remove double quotes from entered string. This is necessary to
rem avoid a syntax error on next command line with the IF condition.
set "packageName=!packageName:"=!"
if "!packageName!" == "" (
echo Empty package name.
goto package
) else (
set "packageName=%packageName: =%"
echo Package name with spaces: %packageName%
echo Package name without spaces: !packageName!
pause
)
endlocal
Для понимания используемых команд и как они работают, откройте окно командной строки, выполните там следующие команды, и читать полностью все страницы справок отображаются для каждой команды очень осторожно.
Особенно выход страницы помощи по исполнению if /?
должны быть тщательно и полностью прочитан, поскольку это помогает объясняет замедленное расширение, как оно должно быть использовано здесь на примерах ,
Смотрите также выход 2 эхо линии в ELSE ветви в коде выше, чтобы понять, в чем разница между ссылками на переменный знаки процента или с восклицательными знаками в блоках, определенный с (
... )
.
используйте кавычки ('" ') с' if' вместо '[' и, кроме ']' – Stephan
К сожалению, этот sotulion не работает. (Ошибка синтаксиса) – Monika
Не работает? Пожалуйста, опишите подробно, что вы ожидаете, и что вы на самом деле получаете ... – aschipfl