如何在批处理脚本中检查是否相等?

时间:2015-12-30 00:48:19

标签: batch-file windows-7 scripting

我正在尝试查找具有特定日期的文件,但我的平等并不像我认为的那样有效。这是我的批处理文件:

@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION

chdir /d T:

FOR /r %%i IN (*) do (
   echo %%i

   set FileDate=%%~ti
   echo Date: !FileDate!

   set year=!FileDate:~6,4!  
   echo year: !year!

   if !year! == 2009 (
      echo is 2009
   ) else (
      echo not 2009
   )
)

当我运行它时,我得到以下输出:

T:\SomeFile.txt
Date: 09/11/2009 02:51 PM
year: 2009
not 2009

有人可以向我解释为什么今年印刷为2009年,但是if if check不会被视为2009年?谢谢,抱歉我的批处理文件noobery。

3 个答案:

答案 0 :(得分:1)

它实际上是一个空白问题。

在这一行,你在末尾有额外的空格,它被添加到变量中。

set year=!FileDate:~6,4!  

答案 1 :(得分:1)

如果您启用了命令扩展,则可以使用==运算符代替EQU比较运算符,这意味着可以使用if /?运算符(请参阅cmd /?以及{{1} }):

if !year! EQU 2009

这会进行数值比较,因此任何一个值周围的空格都没有效果。

但是,为了避免任何空格成为变量值的一部分(在这种情况下year包含两个尾随空格),您应该使用set的以下语法:

set "year=!FileDate:~6,4!"

由于引号""在整个表达式周围,因此它们不会成为值的一部分。

答案 2 :(得分:0)

请你试试(添加/ a):

  

设置/一年=!FileDate:~6,4!

你可以参考: https://en.wikibooks.org/wiki/Windows_Batch_Scripting

祝你好运^^ /