with variable script commands batch bat windows scripting cmd

script - windows batch assign variable output command



AƱadiendo a% TIME% variable en script de Windows cmd (5)

Acabo de escribir set/? y descubrió que cmd es mucho mejor que el viejo murciélago ... :-)

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 las matemáticas extra ... :-D

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.

Buscando comenzar un proceso en una compensación 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


2 PhiLho

Gracias

Mi código de 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


@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


Aquí está la matemática extra:

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


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