【问题标题】:add minutes (whole number) in time to batch-file将分钟(整数)及时添加到批处理文件
【发布时间】:2019-04-17 07:14:29
【问题描述】:

我想输入一个整数(这些数字将始终代表分钟),这会增加当前时间以在 SCHTASKS 命令中使用它。例如,如果当前是 14:56:03,我将 9 或 09 放入 var1 应在 var2 中设置 15:05:03。我有这个糖果

@echo OFF
echo add minutes
set/p "var1=>"
set/a "var2=%var1%+%time%"
SCHTASKS /change /sd %date% /st %var2% /tn task

我知道这不起作用,但我不知道该怎么做。有什么想法吗?

【问题讨论】:

  • 使用 PowerShell,必要时甚至可以使用批处理文件。 它有时间加/减的方法.

标签: windows batch-file windows-task-scheduler


【解决方案1】:

为了完成这个请求,我结合了this answer 发布的方法:

@echo OFF
echo add minutes to %time%
set/p "var1=>"

for /F "tokens=1-3 delims=:.," %%a in ("%time%") do set /A "new=(%%a*60+1%%b-100+var1)*60+1%%c-100"
set /A "ss=new%%60+100,new/=60,mm=new%%60+100,hh=new/60,hh-=hh*!(hh-24)"
set "var2=%hh%:%mm:~1%:%ss:~1%"

ECHO SCHTASKS /change /sd %date% /st %var2% /tn task

编辑添加到次日

接下来的代码也使用this answer描述的方法,必要时将日期部分调整为第二天:

@echo OFF
setlocal

echo add minutes
set/p "var1=>"

for /F "tokens=2 delims==" %%a in ('wmic OS Get LocalDateTime /value') do set "dt=%%a"
set /A "D=%dt:~0,8%, MM=1%dt:~4,2%-100, newS=((1%dt:~8,2%-100)*60+1%dt:~10,2%-100+var1)*60+1%dt:~12,2%-100"
set /A "s=newS%%60+100,newS/=60,m=newS%%60+100,h=newS/60,newDD=h/24,h%%=24"
if %newDD% neq 0 (
   set /A "newMM=!( 1%D:~6%-(130+(MM+MM/8)%%2+!(MM-2)*(!(%D:~0,4%%%4)-2)) ), lastMM=!(1%D:~4,2%-112), newYYYY=newMM*lastMM"
   set /A "MM+=newMM*(1-lastMM*12), D+=newYYYY*(20100-1%D:~4%) + !newYYYY*newMM*(100*MM+10000-1%D:~4%) + newDD"
)
set "var2=%h%:%m:~1%:%s:~1%"  &  set "var3=%D:~6,2%/%D:~4,2%/%D:~0,4%"

ECHO SCHTASKS /change /sd %var3% /st %var2% /tn task

【讨论】:

  • 我打算修改我的答案以解决八进制问题,但这个解决方案有效。
  • 效果很好,想给大家一个更好的答案。真的很感谢。
  • 恕我直言,根据未请求的功能选择最佳答案是不公平的... :/ 请参阅我的编辑。
【解决方案2】:

由于输入的分钟偏移量也可能更改日期, 我会让 PowerShell 进行计算

@echo off
set /p "var1=enter minutes to add: "
for /f "tokens=1*" %%A in ('
  powershell -NoP -C "(Get-Date).AddMinutes(%var1%).ToString('yyyy/MM/dd HH:mm:ss')"
') do (
  Set "MyDate=%%A"
  set "MyTime=%%B"
)
echo SCHTASKS /change /sd %MyDate% /st %MyTime% /tn task

【讨论】:

  • 使用 schtasks 的日期 dd/MM/yyyy 的格式。这个解决方案是我最喜欢的一个,因为它也解决了这一天,尽管我在问题中没有提到它。谢谢:D
  • 我不明白为什么这总是在任务中设置 00 秒 ... echo mytimes 中的示例显示 18:03:22 并且在任务中设置了 18:03:00
  • 可能是 schtasks 本身的问题,帮助 schtasks /change /? 只是提到了小时:分钟和 /st
  • 我就是这么想的 :(
猜你喜欢
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多