Batch file 批处理文件中的输入和变量
我正在制作一个批处理文件来更新我的svn存储库并复制它的日志,但一旦我得到if语句,我会得到“goto此时是意外的”,对于带有输入变量的echo,它只会说“echo echo已打开”。我让它在某一点上大部分工作,但不管输入是什么,它总是说第一个Batch file 批处理文件中的输入和变量,batch-file,svn,Batch File,Svn,我正在制作一个批处理文件来更新我的svn存储库并复制它的日志,但一旦我得到if语句,我会得到“goto此时是意外的”,对于带有输入变量的echo,它只会说“echo echo已打开”。我让它在某一点上大部分工作,但不管输入是什么,它总是说第一个input==“y”块是真的 @echo on set /p UserInput = Are you sure you want to update your repo? echo %UserInput% if %UserInput% == "y"
input==“y”
块是真的
@echo on
set /p UserInput = Are you sure you want to update your repo?
echo %UserInput%
if %UserInput% == "y" goto Update
if %UserInput% == "n" goto :EOF
:Update
svn update
Echo Creating the basic log.
svn log > BasicLog.log
:: creates the non-verbose log
Echo Creating the verbose log.
svn log -v > verboseLog.log
::creates the verbose log
set语句中的
=
周围不能有空格。您已经创建了一个名为%UserInput%
的变量
set /p UserInput=Are you sure you want to update your repo?
对于第二部分,必须在比较运算符的两侧使用引号
if /i "%UserInput%"=="y" goto Update
/i
使比较不区分大小写
逻辑:考虑如果输入既不是<代码> y>代码>也不是<代码> n< /代码>
会发生什么? 提示:这是有效的:if /i not "%UserInput%"=="y" goto somewhere
谢谢,我还需要删除if语句中y和n周围的引号。@Rave340:这不是个好主意。一般来说,您最好同时引用双方,因为您有可能包含分隔符的不受控制的输入。这可能会导致语法错误(即使两边都引用也不是防弹的。)我知道我个人使用
[
和]
进行字符串检查,因为它们比引号更不可能被使用。