Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件中的输入和变量_Batch File_Svn - Fatal编程技术网

Batch file 批处理文件中的输入和变量

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"

我正在制作一个批处理文件来更新我的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" 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:这不是个好主意。一般来说,您最好同时引用双方,因为您有可能包含分隔符的不受控制的输入。这可能会导致语法错误(即使两边都引用也不是防弹的。)我知道我个人使用
[
]
进行字符串检查,因为它们比引号更不可能被使用。