2008-11-19 20 views
8

Me doy cuenta de que esto probablemente podría hacerse más fácilmente en muchos otros lenguajes de scripting, pero comencé a hacerlo rápidamente en cmd y ahora soy curioso.Añadiendo a% TIME% variable en el script de Windows cmd

Buscando iniciar un proceso en un desplazamiento al momento en que comenzó otro proceso. Digamos 5 minutos para mantenerlo simple. ¿Hay alguna manera de agregar a la variable% TIME%?

Por ejemplo:

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

Gracias por cualquier ayuda

Respuesta

12

me acaba de escribir cmd y set/? descubierto es mucho mejor que la vieja bruja ... :-)

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

Obviamente, puedes obtener 62 minutos, etc., te dejo hacer la matemática extra ... :-D

1

2 Phi Lho

gracias

Mi código baño:

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

_ "código de baño" _: 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

Aquí está el extra en matemáticas:

:: 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 establece 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 
Cuestiones relacionadas