79759282

Date: 2025-09-08 19:48:26
Score: 3
Natty:
Report link
@echo off
setlocal enabledelayedexpansion

REM Detecta si hay una cosola visible (interactivo)
if "%SESSIONNAME%" == "Console" (
    choice /M "¿Desea continuar?"
    if errorlevel 2 exit /b
)
REM aqui segun el caso, se continua con el script
REM Obtener la fecha actual desde la variable de entorno %date%
REM el formato de %date% depende de la configuración regional del sistema opetativo
REM Por ejem: DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD.
set fecha=%date%

REM Extraer día, mes, año usando substrings.
REM Ajusta los indices si tu formato de fecha es diferente.
REM Para formato DD/MM/YYYY
set dd=!fecha:~0,2!
set mm=!fecha:~3,2!
set yyyy=!fecha:~6,4!

REM Reconstruir la fecha en formato DD/MM/YYYY
set fecha_formateada=!dd!/!mm!/!yyyy!

REM Obtener el día de la semana (viene en inglés, asi que posteriormente lo traduciremos por comodidad al ver la consola.
REM El primer token suele ser el nombre del dia abreviado (Mon, Tue, etc.)
for /f "tokens=1 delims= " %%d in ('date /t') do set dia_en=%%d

REM Traducir el día de la semana al español
set dia_es=Lunes
if /i "!dia_en!"=="Tue" set dia_es=Martes
if /i "!dia_en!"=="Wed" set dia_es=Miércoles
if /i "!dia_en!"=="Thu" set dia_es=Jueves
if /i "!dia_en!"=="Fri" set dia_es=Viernes
if /i "!dia_en!"=="Sat" set dia_es=Sábado
if /i "!dia_en!"=="Sun" set dia_es=Domingo

REM 1) Verificar si es sábado o domingo y suspender el proceso si es así ------------------------------------------------------------------------------------------------
if /i "!dia_es!"=="Sábado" (
    echo Hoy es sábado. El proceso se aborta.
    pause
    exit /b
)
if /i "!dia_es!"=="Domingo" (
    echo Hoy es domingo. El proceso se aborta.
    pause
    exit /b
)
REM ------------------------------------------------------------------------------------------------------------------------------------------------------------------

REM 2) Obtener hora actual (lo ajustaremos por comodidad de lectura a formato de AM - PM, solo para la consola)
set hora=%time:~0,2%
set minutos=%time:~3,2%
set segundos=%time:~6,2%

REM Quitar espacios iniciales en la hora
if "!hora:~0,1!"==" " set hora=!hora:~1,1!

REM Determinar AM o PM
set ampm=AM
if !hora! GEQ 12 set ampm=PM
if !hora! GTR 12 set /a hora=!hora!-12
if !hora! EQU 0 set hora=12

REM Mostrar fecha y hora con AM/PM

REM echo Fecha actual: !fecha_formateada!
REM echo Dia de la semana: !dia_es!
REM echo: Inicio de ejecucion: !dia_es! !fecha_formateada! %time%

REM Mostrar en pantalla
echo Inicio de ejecucion: !dia_es! !fecha_formateada! !hora!:!minutos!:!segundos! !ampm! 
echo.

REM 3) A partir de aqui inicia el proceso de copia (y renombre del archivo si fuese el caso) -------------------------------------------------------------------------------
REM Configura los nombres y rutas
set "origen=D:\Proyectos\Batch Script\OperativaMacrobase\scc02525247.TXT"
set "destino=D:\Proyectos\Batch Script\000_ArchivoBase\scc02525247.TXT"

:INTENTAR
echo Verificando existencia de archivo en: !origen!
if exist "!origen!" (
    echo Archivo encontrado. Verificando que el archivo este totalmente copiado...
    for %%A in ("!origen!") do set size1=%%~zA
    echo Tamano inicial: !size1!
    timeout /t 10 >nul
    for %%A in ("!origen!") do set size2=%%~zA
    echo Tamano despues de 10 segundos: !size2!
    if "!size1!"=="!size2!" (
        echo El archivo esta listo para copiar.
        copy "!origen!" "!destino!"
        echo Copia de archivo completada.
        goto FIN
    ) else (
        echo El archivo aun se esta modificando. Reintentando en 5 segundos...
        timeout /t 5 >nul
        goto INTENTAR
    )
) else (
    echo Archivo no encontrado. Reintentando en 5 segundos...
    timeout /t 5 >nul
    goto INTENTAR
)

:FIN

REM Copiar archivo.txt de C:\Origen a C:\Destino
REM copy "\\MX2CT1HNASCIFNFSEVS1.mx.corp\Cartera_Sis390\scc02525247.TXT" "D:\Castor\Documentacion\Lenguajes\Batch Script\000_ArchivoBase\scc02525247.TXT"

REM Renombrar archivo.txt a nuevo_nombre.txt en C:\Destino
REM ren "D:\Castor\Documentacion\Lenguajes\Batch Script\000_ArchivoBase\scc02525247.TXT" "castor.txt"

REM 4) REM Bloque de conexión a Oracle usando SQL Plus --------------------------------------------------------------------------------------------------------------------

REM Reemplaza USUARIO, PASSWORD, y TNS con tus datos

set ORACLE_USER=user_developer
set ORACLE_PASS=11159286Cs
set ORACLE_TNS=FREE

REM Ejecutar un query y guardar el resultado en un archivo
sqlplus -S %ORACLE_USER%/%ORACLE_PASS%@%ORACLE_TNS% @consulta.sql > resultado.txt













REM Ejemplo de consulta.sql:
REM SELECT SYSDATE FROM DUAL;
REM EXIT;

REM ------------------------------------------------------------------------------------------------------------------------------------------------------------------

REM Obtener hora actual (lo ajustaremos por comodidad de lectura a formato de AM - PM, solo para la consola)
set hora=%time:~0,2%
set minutos=%time:~3,2%
set segundos=%time:~6,2%

REM Quitar espacios iniciales en la hora
if "!hora:~0,1!"==" " set hora=!hora:~1,1!

REM Determinar AM o PM
set ampm=AM
if !hora! GEQ 12 set ampm=PM
if !hora! GTR 12 set /a hora=!hora!-12
if !hora! EQU 0 set hora=12

echo Fin de ejecucion: !dia_es! !fecha_formateada! !hora!:!minutos!:!segundos! !ampm! 

REM ------------------------------------------------------------------------------------------------------------------------------------------------------------------

pause
Reasons:
  • Blacklisted phrase (1): ¿
  • RegEx Blacklisted phrase (2): encontrado
  • Long answer (-1):
  • Has code block (-0.5):
  • Unregistered user (0.5):
  • Low reputation (1):
Posted by: Eliseo