2008-11-19 8 views
8

Je réalise que cela pourrait probablement être fait plus facile dans un certain nombre d'autres langages de script, mais a commencé à le faire rapidement en cmd et maintenant je suis curieux.Ajout à% TIME% variable dans Windows cmd script

Vous souhaitez démarrer un processus à un décalage par rapport à l'heure de démarrage d'un autre processus. Disons 5 minutes pour le garder simple. Y a-t-il un moyen d'ajouter à la variable% TIME%?

Par exemple:

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

Merci pour toute l'aide

Répondre

12

Je viens dactylographié set/? et cmd découvert est beaucoup mieux que la vieille chauve-souris ... :-)

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

De toute évidence, vous pouvez obtenir 62 minutes, etc., je vous laisse faire les maths supplémentaires ... :-D

1

2 Phi LHO

grâce

Mon code de bain:

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 
+0

_ "code de bain" _: D – akinuri

1
 @echo off 
     :: START USAGE ================================================================== 
     ::SET THE NICETIME 
     :: SET NICETIME=BOO 
     :: CALL GetNiceTime.cmd 

     :: ECHO NICETIME IS %NICETIME% 

     :: echo nice time is %NICETIME% 
     :: END USAGE ================================================================== 

     echo set hhmmsss 
     :: this is Regional settings dependant so tweak this according your current settings 
     for /f "tokens=1-3 delims=:" %%a in ('echo %time%') do set hhmmsss=%%a%%b%%c 
     ::DEBUG ECHO hhmmsss IS %hhmmsss% 
     ::DEBUG PAUSE 
     echo %yyyymmdd% 
      :: this is Regional settings dependant so tweak this according your current settings 
     for /f "tokens=1-3 delims=." %%D in ('echo %DATE%') do set yyyymmdd=%%F%%E%%D 
     ::DEBUG ECHO yyyymmdd IS %yyyymmdd% 
     ::DEBUG PAUSE 


     set NICETIME=%yyyymmdd%_%hhmmsss% 
     ::DEBUG echo THE NICETIME IS %NICETIME% 

     ::DEBUG PAUSE 
2

Voici le calcul supplémentaire:

:: 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% 
+0

si% hr% leq 9 set hr = 0% hr: ~ 1,1% – serega386

0

copy.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 
Questions connexes