Добавление к переменной %TIME% в сценарии Windows cmd

Я понимаю, что это, вероятно, можно было бы сделать проще на любом другом языке сценариев, но я начал делать это быстро в cmd, и теперь мне любопытно.

Глядя на запуск процесса со смещением ко времени запуска другого процесса. Скажем, 5 минут, чтобы все было просто. Есть ли способ добавить к переменной% TIME%?

Например:

start /b foo.exe
at %TIME% + 5 minutes bar.exe

Спасибо за любую помощь


person Community    schedule 19.11.2008    source источник


Ответы (5)


Я только что набрал set/? и обнаружил, что cmd намного лучше старого bat... :-)

set h=%TIME:~0,2%
set m=%TIME:~3,2%
set/a m2="m+5"
set t2=%h%:%m2%
set t2

Очевидно, вы можете получить 62 минуты и т. д., я позволю вам сделать дополнительную математику... :-D

person PhiLho    schedule 19.11.2008

Вот дополнительная математика:

:: Get an offset of 1 minute from the current time, accounting for edge cases
set hr=%TIME:~0,2%
set /a mn=%TIME:~3,2%+1
:: check minutes; greater than 60? add n/60 to hour, n%60 to mins
if %mn% geq 60 set /a hr=hr+mn/60 && set /a mn=mn%%60
if %hr% geq 24 set /a h=0
:: pad zeros if necessary
if %mn% leq 9 set mn=0%mn%
if %hr% leq 9 set hr=0%hr%
person Rob Bos    schedule 21.08.2013
comment
если %hr% leq 9 установить hr=0%hr:~1,1% - person ; 02.04.2014

2 Фило

спасибо

Мой банный код:

set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set time=%h%_%m%_%s%
mkdir c:\test\%time%
move c:\test\*.* c:\test\%time%
"C:\Program Files\WinRAR\RAR" a -ep c:\test\%time%\ -agDD-MM-YY_hh-mm-ss c:\test\%time%\*.* -zc:\arhiv\HEADERS.TXT
move c:\test\%time%\*.rar c:\arhiv\
rmdir c:\test\%time% /S /Q
person Community    schedule 10.08.2009

копировать.cmd:

set hr=%TIME:~0,2%
if %hr% leq 9 set hr=0%hr:~1,1%
set mydate=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%-%hr%%TIME:~3,2%%TIME:~6,2%
copy file.txt file-%mydate%.txt
pause
person Community    schedule 02.04.2014

Немного расширил "банный код":

echo ----- time -----
echo %time%
set _hh=%time:~0,2%
set _mm=%time:~3,2%
set _ss=%time:~6,2%
set __time=%_hh%%_mm%%_ss%
echo _%__time%_
echo ----- time -----
echo:
echo ----- date -----
echo %date%
set _Y=%date:~0,4%
set _M=%date:~5,2%
set _D=%date:~8,2%
set __date=%_Y%%_M%%_D%
echo _%__date%_
echo ----- date -----
pause

Выводит 205146 за %__time%

Выводит 20180613 для %__date%

person le luxe fou    schedule 13.06.2018
comment
это не работает для других локализаций даты, таких как европейский формат 13/12/1234. - person beppe9000; 10.02.2019