Cmd:]此时出人意料

时间:2014-02-12 13:32:10

标签: batch-file cmd

我写了一个名为promptvar.bat的程序 每次我正常运行它,它只是说:

  

]此时出人意料。

有什么问题?是::吗?或者是echo? 这是代码:( SYNTAX INCLUDED

@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

任何帮助将不胜感激 谢谢。

1 个答案:

答案 0 :(得分:3)

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

因为它本身位于if,所以cmd需要知道不是if "%1"=="/?" (

的结尾

为此,使用脱字符 ^ 转义因此:

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 ON ,因此在提示后解释并显示每一行。

+用于描述显示的两个元素。

似乎以我的方式为我工作 - 您正在测试哪些批次可以按照您的要求进行此项工作?