elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 [3] 4 5
21  Programación / Scripting / Re: Averiguar dia de la semana [Batch] en: 26 Agosto 2009, 21:11 pm
El codigo completo de la funcion qu crea el archivo de configuración para la conexión ftp es:

Código:
:: Configuración FTP
if not defined countstop (
@echo off
cls
cd /d C:\
echo Establezca contador de parada:
set /p countstop="   >"
)

:configftp
echo open XXX.XX.XXX.XXX>conexionFTP.txt
echo XXXXXXXX>>conexionFTP.txt
echo XXXXXXXX>>conexionFTP.txt
echo debug>>conexionFTP.txt
echo hash>>conexionFTP.txt
echo ascii>>conexionFTP.txt
echo lcd descargado>>conexionFTP.txt
echo.>>conexionFTP.txt
echo bell>>conexionFTP.txt

:: Configuracion de las carpetas a verificar en el ftp.
set /a count=1
:: En winXP no es posible determinar el dia de la semana. ¿o si?
:setdia
set diaLetras=%date:~0,3%
if "%diaLetras:~-1%"=="/" (
cls
echo  ---^>
echo  ---^> El sistema no puede controlar los dias.
echo  ---^> Indique el dia actual: Lun=1 a Dom=7
set /p diaCod="---> "
call:verificadia
goto setdiaok
) else (
:: En win2000 si se puede.
if "%diaLetras%"=="Lun" set /a diaCod=1
if "%diaLetras%"=="Mar" set /a diaCod=2
if "%diaLetras%"=="Mi‚" set /a diaCod=3
if "%diaLetras%"=="Jue" set /a diaCod=4
if "%diaLetras%"=="Vie" set /a diaCod=5
if "%diaLetras%"=="S b" set /a diaCod=6
if "%diaLetras%"=="Dom" set /a diaCod=7
goto setdiaok
)
:verificadia
if %diaCod% GEQ 1 if %diaCod% LEQ 7 goto:EOF else (
echo  ---^> ­Error! ­Dia inexistente! El programa se cerrar .
pause>nul
exit
)
:: **********************************************************
:setdiaok
::año actual
set anno=%date:~-4%
::mes actual
if %date:~-7,1% EQU 0 (set /a mesNum=%date:~-6,1%) else (set /a mesNum=%date:~-7,2%)
if %mesNum%==1 set mesCarpeta=01-Enero
if %mesNum%==2 set mesCarpeta=02-Febrero
if %mesNum%==3 set mesCarpeta=03-Marzo
if %mesNum%==4 set mesCarpeta=04-Abril
if %mesNum%==5 set mesCarpeta=05-Mayo
if %mesNum%==6 set mesCarpeta=06-Junio
if %mesNum%==7 set mesCarpeta=07-Julio
if %mesNum%==8 set mesCarpeta=08-Agosto
if %mesNum%==9 set mesCarpeta=09-Septiembre
if %mesNum%==10 set mesCarpeta=10-Octubre
if %mesNum%==11 set mesCarpeta=11-Noviembre
if %mesNum%==12 set mesCarpeta=12-Diciembre
::dia actual
if %date:~-10,1% EQU 0 (set /a diaFecha=%date:~-9,1%) else (set /a diaFecha=%date:~-10,2%)

:: *************************************************************************************
SetLocal EnableDelayEdexpansion
:bucle
:: Contador. Si count es mayor o igual a countstop, se sale del bucle.
if %count% GTR %countstop% goto finbucle
:: **************************************************************************
:: Determina si se acabó la semana. Además me excluye los dias no habiles
if %diaCod%==0 (set /a diaCod=5) & (set /a diaFecha=diaFecha-2) & (goto bucle)
if %diaCod%==6 (set /a diaCod=5) & (set /a diaFecha=diaFecha-1) & (goto bucle)
:: esto evalua si se acabaron los dias. Se debe empezar con el mes siguiente
if %diaFecha% LSS 1 (
if %mesNum%==1 (set /a mesNum=12) & (set /a anno-=1) else (set /a mesNum-=1)
if !mesNum!==1 (set /a diaFecha=31)
:: problemas cuando sea año bisiesto
if !mesNum!==2 (set /a diaFecha=28)
if !mesNum!==3 (set /a diaFecha=31)
if !mesNum!==4 (set /a diaFecha=30)
if !mesNum!==5 (set /a diaFecha=31)
if !mesNum!==6 (set /a diaFecha=30)
if !mesNum!==7 (set /a diaFecha=31)
if !mesNum!==8 (set /a diaFecha=31)
if !mesNum!==9 (set /a diaFecha=30)
if !mesNum!==10 (set /a diaFecha=31)
if !mesNum!==11 (set /a diaFecha=30)
if !mesNum!==12 (set /a diaFecha=31)
)
:: **************************************************************************
::Variables para imprimir en el archivo de configuración
::mes a imprimir
if %mesNum% LSS 10 (set mes=0%mesNum%) else (set mes=%mesNum%)
::dia a imprimir
if %diaFecha% LSS 10 (set dia=0%diaFecha%) else (set dia=%diaFecha%)
::campanazo de ultima carpeta
if %count% EQU %countstop% echo bell>>conexionFTP.txt
::titulo de la ventana
call:title
echo cd %anno%-%mes%-%dia%>>conexionFTP.txt
echo mget *_I*>>conexionFTP.txt
echo cd ..>>conexionFTP.txt
::campanazo de primer carpeta
if %count%==2 echo bell>>conexionFTP.txt
echo.>>conexionFTP.txt
set /a diaFecha-=1
set /a count+=1
set /a diaCod-=1
:: ****************************************************************************
goto bucle
EndLocal
:title
::*******************************************************
:: Inserta Titulo de ventana entre cada carpeta del FTP
SetLocal DisableDelayEdexpansion
echo !title %anno%-%mes%-%dia% (%count% de %countstop%)>>conexionFTP.txt
goto:EOF
::*******************************************************
:finbucle

echo bye>>conexionFTP.txt
echo  ---^> Configuraci¢n FTP terminada.
goto:EOF

El problema lo tengo en la etiqueta setdia. La unica solucion fue que el usuario ingresara el dia manualmente, pero la idea es que el proceso se ejecute en un servidor.
22  Programación / Scripting / Re: Averiguar dia de la semana [Batch] en: 26 Agosto 2009, 18:22 pm
No necesito programar la tarea para su ejecución.

En el ftp, un proveedor guarda los archivos en carpetas con nombre yyyy-mm-dd

Citar
\
2009-08-26
2009-08-25
2009-08-24
...

Tengo un bat que ingresa a cada carpeta y me descarga los archivos que tiene cada carpeta solo de los 10 ultimos dias habiles (excluyo los sabados y los domingos). la idea es hacerlo solo con variables de bat, o en últimas de vbs, pero sin instalar programas.
23  Programación / Scripting / Averiguar dia de la semana [Batch] en: 26 Agosto 2009, 17:44 pm
Hola a todos!

Tengo un archivo bat que necesita saber el dia de la semana para poder excluir los sabados y los domingos. El progrma descarga por ftp archivos que estan en carpetas con la estructura yyyy-mm-dd, pero solo dias habiles.

Lo uqe hago es:
Código:
[...]
set diaLetras=%date:~0,3%
if "%diaLetras%"=="Lun" set /a diaCod=1
if "%diaLetras%"=="Mar" set /a diaCod=2
if "%diaLetras%"=="Mi‚" set /a diaCod=3
if "%diaLetras%"=="Jue" set /a diaCod=4
if "%diaLetras%"=="Vie" set /a diaCod=5
if "%diaLetras%"=="S b" set /a diaCod=6
if "%diaLetras%"=="Dom" set /a diaCod=7
[...]

Esto funciona de maravilla en Win2000... pero en XP no sirve, ya que la %DATE% no muestra el dia de la semana.

¿Que puedo hacer? ¿Hay otra forma?

Gracias! ;D
24  Programación / Scripting / Re: [Batch] Leer lineas de archivo y generar opciones en: 2 Abril 2009, 14:27 pm
Hasta ahora llevo el codigo asi:

Código:
echo   Se han encontrado las siguientes planillas:
echo.
echo  ÉÍÍÍÍÍÍËÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo  º CONS º                            PLANILLA                            º
echo  ÌÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹
SetLocal EnableDelayEdexpansion
set /A count=0
for /f "delims=\ tokens=1-6" %%A in ('findstr /R /I /C:"_%planilla%_" O:\%anno%\list_busqueda\%mes%.txt') do (
set /A count+=1
echo  º   !count!  º  %%F
echo  ÌÍÍÍÍÍÍÎÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
set ruta!count!="%%A\%%B\%%C\%%D\%%E\%%F"
)

if not defined ruta1 (
echo   Planilla %planilla% no existe o la lista de busqueda no esta actualizada
echo.
pause
goto main
)
echo.
echo   Ingrese consecutivo planilla que desea ver:
echo   n = nueva busqueda   x = salir
set /p opc="> "
if not defined opc (goto encontrados)
set opc=%opc: =_%
if %opc%==n (
EndLocal
goto main
)
if %opc%==N (
EndLocal
goto main
)
if %opc%==x goto exit
if %opc%==X goto exit
if %opc% GEQ 1 (
if %opc% LEQ %count% (
call:open
)
)
EndLocal
goto encontrados

:open
if %opc%==1 if defined ruta1 start C:\Notepad++\notepad++5.3.1.exe %ruta1%
if %opc%==2 if defined ruta2 start C:\Notepad++\notepad++5.3.1.exe %ruta2%
if %opc%==3 if defined ruta3 start C:\Notepad++\notepad++5.3.1.exe %ruta3%
if %opc%==4 if defined ruta4 start C:\Notepad++\notepad++5.3.1.exe %ruta4%
if %opc%==5 if defined ruta5 start C:\Notepad++\notepad++5.3.1.exe %ruta5%
if %opc%==6 if defined ruta6 start C:\Notepad++\notepad++5.3.1.exe %ruta6%
if %opc%==7 if defined ruta7 start C:\Notepad++\notepad++5.3.1.exe %ruta7%
if %opc%==8 if defined ruta8 start C:\Notepad++\notepad++5.3.1.exe %ruta8%
if %opc%==9 if defined ruta9 start C:\Notepad++\notepad++5.3.1.exe %ruta9%
if %opc%==10 if defined ruta10 start C:\Notepad++\notepad++5.3.1.exe %ruta10%
goto:EOF

Pero solo funciona hasta ruta10 (osea 10 archivos encontrados. ¿No es posible hacerlo con recursion y/o un contador?
25  Programación / Scripting / Re: [Batch] Leer lineas de archivo y generar opciones en: 30 Marzo 2009, 18:02 pm
Hasta ahora llevo el script así:

Código:
@echo off
:encontrados

SetLocal EnableDelayEdexpansion
set /A count=0
echo on
for /f "delims=\ tokens=1-6" %%A in (c:\temp.txt) do (
set /A count+=1
echo !count! ¯ %%D: %%F
set ruta!count!="%%A\%%B\%%C\%%D\%%E\%%F"
echo %ruta!count!%
)

echo.
echo Ingrese consecutivo planilla que desea ver: count = %count%

set /p opc="> "
set opc=%opc: =_%
if %opc%==n goto main
if %opc%==x goto fin
::if not defined opc (goto encontrados)

if %opc% GEQ 1 (
if %opc% LEQ %count% (
::COMO HAGO PARA QUE ABRA EL ARCHIVO SELECCIONADO?
)
)
EndLocal
goto encontrados

En estos momentos en el archivo temp.txt hay:
Citar
O:\2009\03-Marzo\Asocajas\2009-03-02\2009-03-02_1_1190280_CC_10239342_EPS018_86_I_2009-03.TXT
O:\2009\03-Marzo\Simple\2009-03-25\2009-03-25_2_8826116295_CC_16653094_EPS018_88_I_2009-03.txt
O:\2009\02-Febrero\Asocajas\2009-02-02\2009-02-02_13572_NI_860013816_EPS018_83_IP.txt
26  Programación / Scripting / Re: [Batch] Leer lineas de archivo y generar opciones en: 30 Marzo 2009, 17:55 pm
El problema es que la lista guardada en el archivo C:\temp.txt se modifica constantemente. La lista puede ir de 1 linea a n lineas.

Por eso tuve la idea de crear una variable con consecutivo

Código:
set linea!count!=%%A
echo %linea!count!%

El problema es que al tratar de llamar la variable %linea!count!% no funciona.
27  Programación / Scripting / Abrir lista de archivos por opciones [BATCH] en: 30 Marzo 2009, 15:11 pm
Hola a todos.

Por favor ayuda urgente!

Si el usuario ingresa opc=3, al imprimir en pantalla la variable open me arroja ruta3, pero lo que necesito es el valor que se encuentra en la variable ruta3.

Código:
...
SetLocal EnableDelayEdexpansion    //Gracias a Pony-Magic.
set /A count=0

for /f "delims=\ tokens=1-6" %%A in (temp.txt) do (
set /A count+=1
echo !count! ¯ %%D: %%F
set ruta!count!="%%A\%%B\%%C\%%D\%%E\%%F"
)

echo.
echo Ingrese consecutivo planilla que desea ver: count = %count%

set /p opc="> "
if %opc%==n goto main
if %opc%==x goto fin
if not defined opc (goto encontrados)
set open=%%ruta!opc!%%
if %opc% GEQ 1 (
if %opc% LEQ %count% (
echo open = %open%
rem notepad %open%  //intenta abrir el archivo rutan...
echo ruta3 = %ruta3%
)
)

EndLocal
...

En pantalla sale:
Citar
1 » Asocajas: Archivo1.TXT
2 » Asocajas: Archivo2.TXT
3 » Asocajas: Archivo3.TXT

Ingrese consecutivo planilla que desea ver: count = 3
> 3
open = %ruta3%
ruta3 = "O:\xx\xx\Asocajas\xx\Archivo3.TXT"

Necesito el valor guardado en %ruta3%.  :huh:

Gracias de antemano.  :D
28  Programación / Scripting / Re: Ayuda con for y set en: 27 Marzo 2009, 22:36 pm
Ahora tengo otro problema...
Digamos que el usuario digitó 2, osea uqe quiere ver el archivo e
Necesito que notepad %open% abra en el aplicativo notepad el valor guardado en %ruta2%. Pero no funciona.

Código:
...
set /p opc="> "                                   //El usuario ingresa 2
if not defined opc (goto encontrados)
set open=%%ruta!opc!%%
if %opc% GEQ 1 (
if %opc% LEQ %count% (
echo ruta!opc! ^= %%ruta!opc!%%  // Imprime "%ruta2%"
echo open ^= %open%                   // Imprime "%ruta2%"
notepad %open%                           //Intenta abrir el archivo "%ruta2%"
)
)
...
29  Programación / Scripting / Re: Ayuda con for y set en: 27 Marzo 2009, 20:12 pm
Problema solucionado!

Código:
SetLocal EnableDelayEdexpansion
for /f "delims=\ tokens=1-6" %%A in (c:\temp.txt) do (
set /A count+=1
echo !count! ¯ %%D: %%F
set ruta!count!="%%A\%%B\%%C\%%D\%%E\%%F"
echo.
)


Gracias Pony-Magic. Me pueden explicar usos de setlocal y endlocal ?

30  Programación / Scripting / [Batch] Leer lineas de archivo y generar opciones en: 27 Marzo 2009, 18:57 pm
Hola nuevamente a todos.

En un bat necesito mostrar en pantalla el contenido de un archivo txt (el cual contiene rutas de archivos). Luego dar la opción de seleccionar cual de estos archivos desea ver. La idea que se me ocurre es guardar cada linea del txt en una variable diferente, la cual está determinada por un contador. Pero no me funciona como espero. Coloco comentarios tipo C++ para explicar un poco lo que hice.

Código:
[pre]
:encontrados
set /A count=0
for /f "delims=\ tokens=1-6" %%A in (c:\temp.txt) do (
call:set
echo %count% ¯ %%D: %%F       //El contador se queda en cero
echo %rutacount%     //No se inicializó la variable para este ámbito?
set %rutacount%="%%A\%%B\%%C\%%D\%%E\%%F"
echo.
)
echo Termina el for
echo Ruta1: %ruta1%    //Existe, pero está vació
echo Ruta2: %ruta2%    //Existe, pero está vació
echo contador es %count%  //Ahora si muestra el contador en 2
pause
goto encontrados
...
...
:set
set /A count=count+1
set rutacount=ruta%count%
echo entro a countfor %count%
goto:EOF
[/pre]


Pero devuelve:
...
entro a countfor 1
0 » Simple: 2009-02-06_1_2254695_NI_805001157_EPS018_88_I.TXT
ECHO está desactivado.
La sintaxis del comando no es correcta.

entro a countfor 2
0 » Simple: 2009-03-05_1_2467997_NI_805001157_EPS018_88_I_2009-03.txt
ECHO está desactivado.
La sintaxis del comando no es correcta.

Termina el for
Ruta1:
Ruta2:
contador es 2
Presione una tecla para continuar . . .

**************************************
El contenido de c:\temp.txt es:

O:\X\X\Simple\X\2009-02-06_1_2254695_NI_805001157_EPS018_88_I.TXT
O:\X\X\Simple\X\2009-03-05_1_2467997_NI_805001157_EPS018_88_I_2009-03.txt

Gracias de antemano.

archivo bat completo:
http://es.geocities.com/dico916/b.bat.html
Páginas: 1 2 [3] 4 5
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines