2011-04-25 43 views
2

我需要一批从文件中读取一个数字,它增加并保存它放回这个文件......这是我想出了:这个批处理脚本有什么问题?

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

IF EXIST script\BUILDVERSION (
    SET /p input = <script\BUILDVERSION 
    SET /a result=%input%+1 
    ECHO %result% > script\BUILDVERSION 
) ELSE (
    ECHO 0 > script\BUILDVERSION 
) 

起初,它在一种奇怪的方式工作,从文件中读取数字的结果似乎是一个小的随机数,总和的结果似乎是随机的......我不知道我做了什么,但现在它甚至没有读取文件中的数字变量...

在此先感谢帮助!

+1

*任何*批处理脚本的问题是它们*是批处理脚本*。 =) – 2011-04-25 20:09:30

+0

嗯,我同意,我永远不会浪费时间与它的乐趣,但我需要这个蚂蚁构建脚本在Windows下工作(Linux的bash对手花了我5分钟实现没有bash脚本的经验) – apirogov 2011-04-25 20:17:12

+1

可以使用vbscript吗?这比批处理脚本更糟糕。 – Luke 2011-04-25 20:42:15

回答

4

而不是%input%%result%,尝试使用!input!!result!。这在使用延迟扩展时似乎效果更好。另外,从文件中读取时请确保没有任何不必要的空格。你最终会得到:

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

IF EXIST script\BUILDVERSION (
    SET /p input=<script\BUILDVERSION 
    SET /a result=!input!+1 
    ECHO !result! > script\BUILDVERSION 
) ELSE (
    ECHO 0 > script\BUILDVERSION 
) 
+0

谢谢!感叹号做到了.. :) – apirogov 2011-04-25 21:33:01

+1

在算术赋值中,变量可以简单地通过它们的名字来引用,没有'!'或'%'s。因此'!input!'可以用'input'替换。 – 2011-04-25 22:18:26