2014-02-12 3 views
1

Я написал программу под названием promptvar.bat.
Everytime я бегу это нормально, это просто говорит:Cmd:] было неожиданным на данный момент

] было неожиданным в это время.

В чем проблема? Это на ::? Или это на echo?
Это код: (СИНТАКСИС ВКЛЮЧЕНО)

@echo off 

::SYNTAX: 
::PROMPTVAR [ /? | [VARIABLE NAME] [PROMPT] ([NEWLINE]) ] 

::CHECK /? 
if "%1"=="/?" (
echo PROMPTVAR 
echo. 
echo GET USER INPUT. 
echo. 
echo SYNTAX: 
echo PROMPTVAR [ /? | [VARIABLE NAME] [PROMPT TEXT] ([NEWLINE]) ] 
echo. 
echo./? : GET HELP INFORMATION - THIS IS IT! 
echo VARIABLE NAME : NAME OF VARIABLE 
echo PROMPT TEXT : TEXT FOR TIP/PROMPT 
echo NEWLINE : WITH THIS PARAMETER, YOU CAN MAKE A NEW LINE TO GET INPUT. 
echo. 
goto :EOF 
) 

::REAL INFO 
if "%3"=="NEWLINE" (
echo.%2 
set /p %1= 
goto :EOF 
) ELSE (
set /p %1="%2" 
goto :EOF 
) 
goto :EOF 

::LOCASE ONLY 
:LoCase 
FOR %%i IN ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z") DO CALL SET "%1=%%%1:%%~i%%" 
GOTO:EOF 

Любая помощь будет оценена.
Спасибо.

+0

Любая секунда теперь кто-то будет рядом, кто заметил точное место, где проблема, и они скажут вам. Но я не знаю, если вы так многому научитесь. Честно говоря: вы разделили это назад, чтобы выяснить, какая линия вызывает его? Так вы узнаете, что для вас не так ... – GreenAsJade

+0

:: это не комментарий: это ярлык. Если вы хотите оставить комментарий, используйте rem. Это не так красиво, как :: но это может помешать вам получить ошибки, которые вы получаете. – cup

+0

Если вы забыли @echo off, вы узнаете, в чем именно он жалуется. – cup

ответ

3

В

echo PROMPTVAR [ /? | [VARIABLE NAME] [PROMPT TEXT] ([NEWLINE]) ] 

Потому что это сам в if, CMD должен знать, что ) не близко от if "%1"=="/?" (

Чтобы сделать это, избежать ) с a caret ^ Таким образом:

echo PROMPTVAR [ /? | [VARIABLE NAME] [PROMPT TEXT] ([NEWLINE]^) ] 

Демонстрация %% и %hi%

Пакетные:

::@ECHO OFF 
SETLOCAL 

SET "hi=" 

ECHO +%%+%hi%+ 
goto :EOF 

Результаты:

c:\106x>SETLOCAL 

c:\106x>SET "hi=" 

c:\106x>ECHO +%++ 
+%++ 

c:\106x>goto :EOF 

Обратите внимание, что echo является ПО так что каждая строка интерпретируется и отображается после строки ,

+ использовать, чтобы очертить два элемента.

Кажется, для меня работает мой путь - какой пакет вы испытываете, чтобы иметь эту работу, как вы утверждаете?

+0

Я думаю, что и труба '' '? – Jamie

+0

Конечно, если вы хотите использовать трубку буквально. Каретка «убегает» (т. Е. Отключается) особым значением следующего символа - кроме '%'. Чтобы избежать '%', вам нужно удвоить его ('%%') – Magoo

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