从批处理脚本中的变量中减去一个数字
Subtraction of a number from a variable in a batch script
我是批处理脚本的新手,所以请宽待这个问题。当我从 'TodayDay' 变量中减去 1 时,该值没有得到更新。下面是行。
set /a "TodayDay=%TodayDay%-1"
我的用例是查找今天的日期是否小于 'lastOpenedDate' 变量,我想将 'lastOpenedDate' 设置为昨天的
set lastOpenedDate=2017-12-22
IF %TodayYear%-%TodayMonth%-%TodayDay% LSS %lastOpenedDate% (
echo Before Subtraction TodayDay is %TodayDay%
set /a "TodayDay=%TodayDay%-1"
echo After Subtraction TodayDay is %TodayDay%
)
当我运行上面的代码时,输出是:
Before Subtraction TodayDay is 20
After Subtraction TodayDay is 20
我从下面提到的代码中得到了其他变量值
for /F "skip=1 delims=" %%F in ('
wmic PATH Win32_LocalTime GET Day^,Month^,Year /FORMAT:TABLE
') do (
for /F "tokens=1-3" %%L in ("%%F") do (
set TodayDay=0%%L
set TodayMonth=0%%M
set TodayYear=%%N
)
)
set TodayDay=%TodayDay:~-2%
set TodayMonth=%TodayMonth:~-2%
我做错了什么?
您需要使用顶部栏搜索 delayed expansion
。这是排名第一的常见问题解答。
改变
set /a "TodayDay=%TodayDay%-1"
echo After Subtraction TodayDay is %TodayDay%
)
到
set /a "TodayDay=%TodayDay%-1"
)
echo After Subtraction TodayDay is %TodayDay%
一旦您熟悉了 delayed expansion.
,这就会变得有意义
现在您将 运行 遇到的下一个问题(直到本月 8 日或 9 日才会出现)是,在批处理中,前导 0
表示 "octal" 所以 - 你真的需要
set /a "TodayDay=1%TodayDay%-1"
)
set "TodayDay=%TodayDay:~-2"
echo After Subtraction TodayDay is %TodayDay%
通过在天数前面串1
来给天数加100,然后你需要得到最后2个字符。
我是批处理脚本的新手,所以请宽待这个问题。当我从 'TodayDay' 变量中减去 1 时,该值没有得到更新。下面是行。
set /a "TodayDay=%TodayDay%-1"
我的用例是查找今天的日期是否小于 'lastOpenedDate' 变量,我想将 'lastOpenedDate' 设置为昨天的
set lastOpenedDate=2017-12-22
IF %TodayYear%-%TodayMonth%-%TodayDay% LSS %lastOpenedDate% (
echo Before Subtraction TodayDay is %TodayDay%
set /a "TodayDay=%TodayDay%-1"
echo After Subtraction TodayDay is %TodayDay%
)
当我运行上面的代码时,输出是:
Before Subtraction TodayDay is 20
After Subtraction TodayDay is 20
我从下面提到的代码中得到了其他变量值
for /F "skip=1 delims=" %%F in ('
wmic PATH Win32_LocalTime GET Day^,Month^,Year /FORMAT:TABLE
') do (
for /F "tokens=1-3" %%L in ("%%F") do (
set TodayDay=0%%L
set TodayMonth=0%%M
set TodayYear=%%N
)
)
set TodayDay=%TodayDay:~-2%
set TodayMonth=%TodayMonth:~-2%
我做错了什么?
您需要使用顶部栏搜索 delayed expansion
。这是排名第一的常见问题解答。
改变
set /a "TodayDay=%TodayDay%-1"
echo After Subtraction TodayDay is %TodayDay%
)
到
set /a "TodayDay=%TodayDay%-1"
)
echo After Subtraction TodayDay is %TodayDay%
一旦您熟悉了 delayed expansion.
现在您将 运行 遇到的下一个问题(直到本月 8 日或 9 日才会出现)是,在批处理中,前导 0
表示 "octal" 所以 - 你真的需要
set /a "TodayDay=1%TodayDay%-1"
)
set "TodayDay=%TodayDay:~-2"
echo After Subtraction TodayDay is %TodayDay%
通过在天数前面串1
来给天数加100,然后你需要得到最后2个字符。