Как сделать условие сравнения строк в DOS? - PullRequest
4 голосов
/ 15 сентября 2010

Ух ты, никогда не думал, что когда-нибудь напишу что-нибудь в DOS.Теперь, когда я это делаю, я знаю, почему я никогда не хотел.Синтаксис абсурд!

В любом случае, мне нужна помощь, пожалуйста.Я хотел бы предложить пользователю ввести данные, и, если получена пустая строка, я хотел бы использовать значение по умолчанию, например:

set name=abraham.
set /p input=please enter your name, press enter to use %name%:
if not %input%=="" set name=%input%
echo your name is %name%

Я получаю сообщение об ошибке:время. "

Можете ли вы помочь, пожалуйста?

Ответы [ 3 ]

8 голосов
/ 15 сентября 2010

Попробуйте

set name=abraham
set /p name=please enter your name, press enter to use %name%:

echo entered : %name%

Обратите внимание, что в файлах cmd, если ничего не введено, переменная не изменяется.

Или, если if:

set name=abraham
set input=
set /p input=please enter your name, press enter to use %name%:
if "%input%" NEQ "" set name=%input%
echo entered : %name%

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

2 голосов
/ 15 сентября 2010

Пустые строки фактически являются пустыми в программировании оболочки, поэтому попробуйте if "%input%"=="" set... (с кавычками) или if %input%== set... (пустая строка пуста).

1 голос
/ 15 сентября 2010

Я полагаю, что вам нужно поместить одинарные кавычки (не уверен, что двойные или одинарные значения) вокруг переменной:

@echo off
set name=abraham.
set /p input=please enter your name, press enter to use %name%:
if not '%input%'=='' set name=%input%
echo your name is %name%

pause
...