2015-10-20 2 views
0

Я писал несколько командных файлов сейчас-в-днях. Я новичок! Поэтому я создал пользовательскую партию, в которой, введя имя настройки, она запускает ее, но. У меня возникли проблемы с созданием этого настраиваемого файла.Если условие не равно, сбои командного файла

@echo off 
set /p lnk="Setup Name = " 
if "%lnk%"=="install.itunes.x64.windows" goto itunes 
:itunes 
start=(path)(setup.exe)..... 
cls 

Но если пользователь вводит «itues или„installitunes“или„KJEWBFciou“что бы это не вышлет моя пользовательская команда, которую я хочу ошибку всплывающее окна в таком состоянии. Что я могу сделать? и не прошу поставить "if not "%lnk%" я уже попробовал уровень помощи:. 0 Потому что у меня есть много настроек, таких как ITunes, если вход не будет равен пользовательской командой он запускает следующую установку Пожалуйста, помогите мне

Пожалуйста igonre моих ошибок я только сделанные здесь не в пакетном файле. в строке 2% lnk%, lnk и строке 3 "% lnk "" % LNK%»

+1

Удалить процент символов из команды SET/P. – Squashman

+2

''% lnk% 'также должно быть' '% lnk%" ' – SomethingDark

+0

После команды' if' вы случайно попадаете в раздел ': itunes', поэтому вам понадобится' goto: EOF' или 'goto': where_else' после 'if' ... – aschipfl

ответ

0

ИТАК ..

1 @echo off 
2 set /p %lnk%="Setup Name = " 
3 if "%lnk%=="install.itunes.x64.windows" goto itunes 
4 :itunes 
5 start=(path)(setup.exe)..... 
6 cls 

Несколько ошибок, но вы близки.

В строке 2 используется:

set /p %lnk%=="Setup Name = " goto itunes 

При установке переменной вы не можете использовать %% вокруг него, но то используется только при сравнении, потому что при создании переменной, компьютер заменит [ set/p% lnk% =] с [set/p =], который является недопустимым синтаксисом.

В строке 3:

if "%lnk%=="install.itunes.x64.windows" goto itunes 

Вы никогда не закрывал котировки на левой стороне сравнения '=='. Обратите внимание, что вы также можете использовать [if% val1% equ% val2%] для тех же результатов, что может помочь, когда вы хотите использовать другие теги сравнения.

Исправлена ​​ошибка, связанная с задачей, которую вы установили, хотя [goto itunes] работает нормально, поэтому неплохо использовать [goto: itunes], и если вы хотите сохранить код вместе, вы можете просто сделать блок кода, как:

if %val1% equ %val2% (
rem do stuff here 
) 

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

if %val1% equ %val2% (
    rem do stuff here 
) else (
    rem do other stuff here 
) 

В ответ на ваш вопрос о его запуске следующей команды, то потому что в строке 3, проверить, если переменная соответствует вашей строки, но если оно не партия пропускает его и запускает следующий line, которая является вашей: itunes label. В целом, это должно работать лучше, после того как вы исправите [start = (path) (setup.exe) .....] для запуска по желанию.

@echo off && color f0 && title Itunes 

:top 
cls 
set /p lnk="Setup Name = " 

if "%lnk%"=="install.itunes.x64.windows" (
    start=(path)(setup.exe)..... 
    cls 
) 
cls 
echo "%lnk%" was not matched to any choices... 
pause 
goto :top 

:: _Arescet

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