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