我有一个非常简单的批处理脚本,我正在处理
我正在考虑在本地实现一个带有wget和版本文件的更新程序并托管在我的服务器上(但由于某种原因我正在使用Batch)
@echo off
for /f "tokens=* delims=" %%x in (version.txt) do set version=%%x
if "%version%" == "1.0.0" (echo yes)
它引用的文本文件只包含
1.0.0
甚至没有换行。回应%version%
在控制台中给我1.0.0
,但if语句什么都没有。
有人想指出我的错误吗?说实话,我是无能为力的
答案 0 :(得分:3)
你似乎在set
命令的末尾有一个顽皮的空间。
批处理对SET
语句中的空格敏感。 SET FLAG = N
将名为“FLAG Space ”的变量设置为值“ Space N”
语法SET "var=value"
(其中value可以为空)用于确保任何杂散尾随空格不包含在分配的值中。 set /a
可以安全地使用“无报价”。
答案 1 :(得分:2)
这很棘手。 set version=%%x
的末尾有一个空格。
作为脚本约定的一般要点,每当您在批处理脚本中将变量设置为字符串时,除非您有特殊原因不这样做,否则应该使用引用的var = value对set "variable=value"
。这有助于避免这样的问题。您的for /f
行应以set "version=%%x"
使用尾随空格,你基本上是在说if "1.0.0 " == "1.0.0"
,这是假的。
作为旁注,如果您愿意,可以从您的网络服务器without using wget获取内容。