2014-12-10 2 views
0

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

"del for delete.(you will get to type the file name later.)" 
"edit for text editor." 
"remoteshutdown for remote shutdown(Real) computer." 
"note for mickywachi's note" 

это работает отлично, но если я печатаю дель, редактировать, RemoteShutdown, заметки и другие вещи, он будет делать то же самое! то, что я хочу, чтобы дель сделать:

Type in file you want to delete! 

(input for file name) 

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

(username they logged on), you typed in the wrong command! type ? for help. 

и запросит ввод снова. Может ли кто-нибудь помочь? Вот код (пропустить этот большой текст и логин и перейти на маркировать вход., что, где проблема есть.)

@echo off 

title miOS 

color 12 

echo "-------------------------" 
echo "   _ ___ ____ " 
echo " _ __ ___ (_)/ _ \/ ___| " 
echo "| '_ ` _ \| | | | \___ \ " 
echo "| | | | | | | |_| |___) |" 
echo "|_| |_| |_|_|\___/|____/ " 
echo "-------------------------" 

echo Copyright(C)mickywachi. All rights Reserved. 

pause 

cls 

color f0 
echo Starting miOS.... 
set current=%CD% 
echo Please Login. 

:login 

color f0 
set /p username=Username: 

if %username%==Administrator goto passlogin 

if %username%==mickywachi goto passlogin else { 
    color f4 
    echo Wrong User! 
    pause 
    goto :login 
} 

:passlogin 

color f0 
set /p password=Password: 
if %username% == Administrator if %password%==admin goto logon 

if %username% == mickywachi if %password%==micky1594 goto logon else { 
    color f4 
    echo Wrong Password! 
    pause 
    goto :passlogin 
} 

:logon 

echo Welcome to miOS! 
echo Type ? for help. 

:input 

set /p input=%current%: 

if %input%==? { 
    echo "del for delete.(you will get to type the file name later.)" 
    echo "edit for text editor." 
    echo "remoteshutdown for remote shutdown(Real) computer." 
    echo "note for mickywachi's note" 

    set input=/ 
    goto input 
} 

if %input%==del { 
    echo Type in file name you want to delete! 

    set /p delwhat=: 
    del %current%\%delwhat%.mifile 
    set input=/ 

    goto input 
} 

if %input%==remoteshutdown start REMOTESHUTDOWN.bat 

if %input%==note start mickywachiNote.bat else { 
    echo %username%, You typed in wrong command! type ? for help. 
    set input=/ 

    goto input 
} 

кто получил идею для этой проблемы?

ответ

0

Ваших условных остросюжетных statments должен быть окружен круглыми скобками ( ) не брекет { }

Там нет выбора здесь.

+0

спасибо, сейчас работа. но с тем, кто заметит, он открывает заметку и делает еще в одно и то же время! edit: nevermind, теперь он работает –

+0

У партии нет способа узнать, является ли 'else' командным параметром для' start' или является 'else' условным. Вам нужно использовать 'if ... (start what) else (somethingelse)', то есть инструкция для выполнения в true должна быть '(в скобках)' – Magoo

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