从命令提示符执行但不是从批处理文件

时间:2016-08-25 19:57:27

标签: batch-file command

我正在尝试在明年的批处理文件中设置一个变量,i。例如,如果当前年份是2016,我希望变量设置为2017

我现在可以通过使用以下方式获取值:

SET /a sum=%date:~6%+1

我尝试将结果重定向到文件,如下所示:

SET /a sum=%date:~6%+1 >next_year.txt

如果我从命令提示符运行它,那么它工作正常。但是如果我在.bat文件中有这个并从命令提示符运行该文件,则会创建next_year.txt文件,但它没有值。

我确定我在这里错过了一些愚蠢的东西,但我会围成一圈。

1 个答案:

答案 0 :(得分:0)

这是因为set /A的设计(因此你无法改变它):

  • 在命令提示符(cmd)上下文中,set /A将(最后)结果输出到控制台窗口。例如,set /A X=1+2将结果3回显到控制台,set /A x=1+2, y=x-1回显2(顺便说一下,没有尾随换行符)。
  • 相反,在批处理文件上下文中,set /A命令不输出任何内容。

要获得set /A命令行的结果,您需要在下一行显式回显它,如echo %X%,参考前面提到的第一个例子。当然,您可以将其重定向到文件中:

> "\path\to\file.txt" echo %X%