Buen día Comunidad elHacker,
pido su apoyo para elaborar un bat que me permita ejecutar una aplicación (exe), al iniciar sesión, pero con la condición que sea una vez al día sin importar la hora de encendido del equipo. y que si en el trascurso del día se inicia nuevamente el equipo ya no permita su ejecución hasta el día siguiente..
Gracias..
Aca el code
@echo off
set "UBIK=Acá la ubicación del .EXE"
IF exist %temp%\Archivosdetxt.txt goto:ET
set "DF=echo %date%>%temp%\Archivosdetxt.txt"
%DF%
start %UBIK%
exit /B
:ET
For /F %%X IN (%temp%\Archivosdetxt.txt) DO (set "fech=%%X")
IF ["%date%"]==["%fech%"] (exit) else (%DF%)
start %UBIK%
Se guarda en la carpeta de inicio.
Saludos.
Muchas gracias por la ayuda, solo vi el incoveniente de que al dia siguiente ya no me permitia en el primer inicio de sesion la ejecucion del archivo exe. por o que le agrege un linea que me permitiera volver a ejecutarlo en el priemer inicio de sesion.
Me sirvio mucho Gracias..
Saludos..
Citar
@echo off
:Inicia
set "UBIK=miApp.exe"
IF exist regDia.txt goto:ET
set "DF=echo %date%>regDia.txt"
%DF%
start %UBIK%
exit /B
:ET
For /F %%X IN (regDia.txt) DO (set "fech=%%X")
IF ["%date%"]==["%fech%"] (exit) else (goto:updateDate)
:updateDate
Del regDia.txt
goto:Inicia
EDITO: Antes de nada, fíjate en que Segadorfelix usa la carpeta temporal para guardar el registro de los días, si no modificas la carpeta en el script, cuando limpies los archivos temporales con el limpiador de Windows o CCleaner o etc.. perderás esa información.
Parece que por medio del programador de taréas de Windows es imposible crear una taréa con los requisitos que necesitas, así que hay que utilizar código.
Aquí tienes:
EDITO2: Si no dispones de Windows Vista/Seven elimina la parte de FORFILES.
Versión 1:
PD: El script normal, sin la creación de la taréa programada.
@Echo OFF
Set "APP=C:\Test.bat"
(IF not exist "%WINDIR%\Task_%date:/=-%.task" (
(FSUTIL File CreateNew "%windir%\Task_%date:/=-%.task" 0
Start /B "" "%APP%") || (Exit /B 1)
) ELSE (
FORFILES /P "%WINDIR%" /M "*.task" /C "CMD /C If NOT @fdate EQU %DATE% (Del /Q "@path")"
Exit /B 0
))>NUL
Versión 2:
PD: El Script se autoagrega a las tareas programadas para iniciarse una vez al iniciar sesión de usuario.
@Echo OFF
Set "APP=C:\Test.bat"
(
If NOT "%~1" EQU "/RUN" (
Copy /Y "%~0" "%WINDIR%\"
SCHTASKS /Create /TN "Batch Task" /TR "\"%WINDIR%\%~nx0\" /RUN" /SC ONLOGON /F
)
IF not exist "%WINDIR%\Task_%date:/=-%.task" (
(FSUTIL File CreateNew "%windir%\Task_%date:/=-%.task" 0
Start /B "" "%APP%") || (Exit /B 1)
) ELSE (
FORFILES /P "%WINDIR%" /M "*.task" /C "CMD /C If NOT @fdate EQU %DATE% (Del /Q "@path")"
Exit /B 0
)
)>NUL
Saludos.
que es esod %date:/=-% y que es %~0
Citar%0
Tutorial extendido de aprendizaje Batch by Elektro H@cker
6.1 Variables especiales (o Variables de parámetro) (o Variables de argumentos) (http://foro.elhacker.net/scripting/tema_bloqueado_hasta_finalizar_el_tuto_tutorial_extendido_de_aprendizaje_batch-t375135.0.html;msg1797955#msg1797955)
Citar%date:/=-%
Replazamiento de caracteres: http://ss64.com/nt/syntax-replace.html