1

这是我拥有的代码:

IF EXIST %CD%\tictactoeXwinlog.log (
  ECHO %xwinlog% > tictactoeXwinlog.log
  ) ELSE (
    IF %xwinlog% > 0 (
ECHO %xwinlog% > %CD%\tictactoeXwinlog.log
) ELSE (
  ECHO 0 > %CD%\tictactoeXwinlog.log
  )

我试图用简单的英语做的是检查日志文件是否存在。如果是,则将变量 %xwinlog% 的当前值写入日志,覆盖其中的任何内容。如果它不存在,我希望它确保变量的值高于 0,如果是,则将其写入日志文件,如果不高于零,则将零写入日志文件。最后一部分是因为无论出于何种原因,当它尝试将变量写入日志并且变量为 0 时,它改为写入“ECHO 已关闭”

我得到的是一个错误,说“)此时是意外的”

任何帮助是极大的赞赏。

4

2 回答 2

3
  1. 正如亚历克斯指出的那样,缺少封闭的括号是一个问题。
  2. 另一个问题是 > 是一个重定向符号。使用 GTR 进行算术比较。
  3. 在比较中使用“%CD%\tictactoeXwinlog.log”等表达式时请使用引号,以防 %CD% 中有空格。
  4. 我认为导致您必须“检查 0”的问题实际上是 xwinlog 是空白的,这导致 echo 语句显示 ECHO 状态(开/关)。这就是为什么我总是使用 ECHO。有些人使用 ECHO:
  5. 如果 xwinlog 是一个数值,那么您的代码可以简化为:

    IF NOT %xwinlog% gtr 0 SET xwinlog=0
    ECHO %xwinlog% > tictactoeXwinlog.log
    
  6. 如果 winlog 是一个字符串值,那么您的代码可以简化为:

    IF "%xwinlog%"=="" SET xwinlog=0 or Any string of your choice... like Not Found
    ECHO %xwinlog% > tictactoeXwinlog.log
    
于 2013-04-01T00:54:52.390 回答
1

我猜是缺少括号。

IF EXIST %CD%\tictactoeXwinlog.log (
  ECHO %xwinlog% > tictactoeXwinlog.log
) ELSE (
  IF %xwinlog% > 0 (
    ECHO %xwinlog% > %CD%\tictactoeXwinlog.log
   ) ELSE (
     ECHO 0 > %CD%\tictactoeXwinlog.log
   )
)
于 2013-04-01T00:10:07.790 回答