Batch file 批处理中IF语句的奇数行为
我有一个非常简单的批处理脚本 我正在考虑在本地使用wget和版本文件实现一个更新程序,并托管在我的服务器上(但出于某种原因,我使用批处理) 它引用的文本文件只包含Batch file 批处理中IF语句的奇数行为,batch-file,if-statement,text,Batch File,If Statement,Text,我有一个非常简单的批处理脚本 我正在考虑在本地使用wget和版本文件实现一个更新程序,并托管在我的服务器上(但出于某种原因,我使用批处理) 它引用的文本文件只包含 1.0.0 甚至连一条新线路都没有。回显%version%会在控制台中显示1.0.0,但if语句不会得到任何结果 有人想指出我的错误吗?老实说,我不知道您似乎在set命令的末尾有一个令人恶心的空格 批处理对SET语句中的空格敏感SET FLAG=N将名为“FLAGSpace”的变量的值设置为“SpaceN” 语法设置“var=val
1.0.0
甚至连一条新线路都没有。回显%version%
会在控制台中显示1.0.0
,但if语句不会得到任何结果
有人想指出我的错误吗?老实说,我不知道您似乎在
set
命令的末尾有一个令人恶心的空格
批处理对SET
语句中的空格敏感SET FLAG=N
将名为“FLAGSpace”的变量的值设置为“SpaceN”
语法
设置“var=value”
(其中值可能为空)用于确保分配的值中不包含任何多余的尾随空格set/a
可以安全地“无引号”使用。您似乎在set
命令的末尾有一个令人恶心的空格
批处理对SET
语句中的空格敏感SET FLAG=N
将名为“FLAGSpace”的变量的值设置为“SpaceN”
语法
设置“var=value”
(其中值可能为空)用于确保分配的值中不包含任何多余的尾随空格set/a
可以安全地“无引号”使用。这很棘手。set version=%%x
的末尾有一个空格
作为脚本约定的一般要点,每当您在批处理脚本中将变量设置为字符串时,除非您有特定的理由不这样做,否则您应该使用var=value对进行set“variable=value”
。这有助于避免类似的问题。您的for/f
行应以set“version=%%x”
对于尾随空格,您基本上是说如果“1.0.0”==“1.0.0”
,这是错误的
顺便说一句,如果您愿意,可以从web服务器获取内容。这很棘手。
set version=%%x
的末尾有一个空格
作为脚本约定的一般要点,每当您在批处理脚本中将变量设置为字符串时,除非您有特定的理由不这样做,否则您应该使用var=value对进行set“variable=value”
。这有助于避免类似的问题。您的for/f
行应以set“version=%%x”
对于尾随空格,您基本上是说如果“1.0.0”==“1.0.0”
,这是错误的
顺便说一句,如果您愿意,可以从web服务器获取内容。因此,我想我理解您的意思哇,关于NewLine的评论我稍微更改了脚本
@echo off
for/f“tokens=*delims=“%%x in”(%CD%\version.txt)如果“%curr%”==“1.0.0”(echo yes),请设置/a curr=%%x
现在它告诉我错误的参数(特别是当我添加/a时),所以,我想我理解了你的意思。哎哟,在NewLine上的评论我稍微更改了脚本@echo off
for/f“tokens=*delims=“%%x in”(%CD%\version.txt)如果“%curr%”==“1.0.0”(echo yes),请设置/a curr=%x
现在它告诉我错误的参数(特别是当我添加/a时)
1.0.0