elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
22 Marzo 2010, 04:36  


Temas destacados: Últimos eventos sobre seguridad/inseguridad


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez.)
| | | |-+  -> Programación BATCH Avanzada. (nuevo)
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 2 3 4 [5] 6 7 8 Ir Abajo Imprimir
Autor Tema: -> Programación BATCH Avanzada. (nuevo)  (Leído 83694 veces)
Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #60 en: 23 Junio 2008, 18:08 »

No me funcionó, pero es posible que sea que lo configuré mal.

Ya hice uno que me funciona de maravilla, pero quiero optimizarlo.
--------------------------------------------------
@echo off
color 0A
title FILTRADO INCAPACIDADES ver3.0
rem Programa: filtroIGE_ver3.5.bat
echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo °
goto ingreso

:nocarp
@echo CARPETA INEXISTENTE!

:ingreso
@echo Ingrese o arrastre carpeta a procesar:
set /p carpeta="> "
%carpeta:~1,2%
cd %carpeta%
if %errorlevel% GTR 0 goto nocarp
cls

:busqueda
echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo PROCESANDO 000%%% °°°°°°°°°°°°
findstr /m /c:"000323               0000000000000000000000000000000000000000" *.txt > filtro.xls
cls

echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo PROCESANDO 025%%% ÛÛÛ²±°°°°°°°
findstr /m /c:"000333               0000000000000000000000000000000000000000" *.txt >>filtro.xls
cls

echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo PROCESANDO 050%%% ÛÛÛÛÛÛ²±°°°°
findstr /m /c:"0003230              0000000000000000000000000000000000000000" *.txt >>filtro.xls
cls

echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo PROCESANDO 075%%% ÛÛÛÛÛÛÛÛÛ²±°
findstr /m /c:"0003330              0000000000000000000000000000000000000000" *.txt >>filtro.xls
cls
goto finalizado

:error
echo Se ha producido un error!
echo Posiblemente el archivo está abierto
echo Cierre el archivo filtro.xls y presione cuaquier tecla para
echo intentar crear de nuevo el archivo.
pause >nul
cls
goto busqueda

:finalizado
echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³              Filtrado INCAPACIDADES             ³
echo    ³                   Shinseiki86                   ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo PROCESANDO 100%%%% ÛÛÛÛÛÛÛÛÛÛÛÛ
echo Archivo filtro.xls generado con exito!
PAUSE


if not exist OK mkdir OK
:proceso
cls
echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³        Proceso de movimiento a carpeta OK       ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo Copie Nombre archivos a procesar:
set /p archivo="> "
if not exist %archivo% goto noarch
cls

echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³             PROCESANDO ÛÛÛ²²²±±±°°°             ³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
move %archivo% OK\
goto proceso
cls

:noarch
cls
echo    ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo    ³°°°°°°°°°°°°°°°ARCHIVO INEXISTENTE!°°°°°°°°°°°°°°³
echo    ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo _
echo %archivo% No existe.
pause
cls
goto proceso
------------------------------------------------------------------------------------------
En el archivo filtro.xls utilizo =A1=A2 para saber cuales estan repetidas. Aplico filtros, selecciono las que sean verdaderas y las copio en el batch.
En línea
Novlucker
Moderador Global
*****
Conectado Conectado

Mensajes: 7.309


Yo que tu lo pienso dos veces!


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #61 en: 23 Junio 2008, 18:33 »

Que fue lo que no te funcionó? :¬¬
Te salió algún tipo de mensaje?

Cambiaste correctamente las rutas en las líneas 3 y 19?

Modificaste las líneas de comparación que agregue al final?
Yo lo he probado y debería de funcionar todo correctamente
Por si las dudas, doble click para ejecutar  :xD

Saludos

Prueba esto

Código:
set objfso = createobject("scripting.filesystemobject")
set lacarpeta = objfso.getfolder("d:\carpetacontenedora")
set afil = lacarpeta.files
movidos = 0
for each f in afil
set elarchivo = objfso.OpenTextFile(f.path,1)
contenido = elarchivo.readall
primero = instr(1,contenido,"000323               0000000000000000000000000000000000000000",1)
segundo = instr(1,contenido,"000333               0000000000000000000000000000000000000000",1)
elarchivo.close
if primero =0 or segundo=0 then
objfso.movefile f.path,"d:\pronto\"&f.name
movidos = movidos+1
end if
next
if movidos = 0 then
msgbox "No se ha movido ningún archivo"
else
msgbox "Se han movido " & movidos &" archivos"
end if

Cambiar línea 2
Cambiar línea 9 (de abajo para arriba XD)

Saludos

« Última modificación: 23 Junio 2008, 18:45 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #62 en: 23 Junio 2008, 18:43 »

linea 3:
set lacarpeta = objfso.getfolder("C:\Documents and Settings\tesdcv01\Escritorio\pruebas")
linea 19:
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok"&f.name
La 19 es la que saca error
En línea
Novlucker
Moderador Global
*****
Conectado Conectado

Mensajes: 7.309


Yo que tu lo pienso dos veces!


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #63 en: 23 Junio 2008, 18:47 »

Te he modificado el anterior mensaje para que además el script devuelva un mensaje de cuantos archivos se movieron.....

Tu problema es sencillo

Citar
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok\"&f.name

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #64 en: 23 Junio 2008, 19:03 »

set objfso = createobject("scripting.filesystemobject")
set lacarpeta = objfso.getfolder("C:\Documents and Settings\tesdcv01\Escritorio\pruebas")
set afil = lacarpeta.files
movidos = 0
for each f in afil
set elarchivo = objfso.OpenTextFile(f.path,1)
contenido = elarchivo.readall
primero = instr(1,contenido,"000323               0000000000000000000000000000000000000000",1)
segundo = instr(1,contenido,"000333               0000000000000000000000000000000000000000",1)
elarchivo.close
if primero =0 or segundo=0 then
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok"&f.name
movidos = movidos+1
end if
next
if movidos = 0 then
msgbox "No se ha movido ningún archivo"
else
msgbox "Se han movido " & movidos &" archivos"
end if
*********************************************
Me renombró los archivos asi:
okokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokokok2008-06-05_641006_NI_891501133_EPS018_88_I
jeje la verdad no tengo la mas remota idea de por qué.
En línea
Novlucker
Moderador Global
*****
Conectado Conectado

Mensajes: 7.309


Yo que tu lo pienso dos veces!


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #65 en: 23 Junio 2008, 19:06 »

Menos mal que es de pruebas  :xD

Es porque en esta línea.....
Citar
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok"&f.name
Debe de haber un slash invertido después del ok
Citar
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok\"&f.name

Ahora si.... tiene que funcionar bien  ;)

Saludos

En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #66 en: 23 Junio 2008, 20:29 »

mmmm ahora me aparece un error en linea 12...

set objfso = createobject("scripting.filesystemobject")
set lacarpeta = objfso.getfolder("C:\Documents and Settings\tesdcv01\Escritorio\pruebas\")
set afil = lacarpeta.files
movidos = 0
for each f in afil
set elarchivo = objfso.OpenTextFile(f.path,1)
contenido = elarchivo.readall
primero = instr(1,contenido,"000323               0000000000000000000000000000000000000000",1)
segundo = instr(1,contenido,"000333               0000000000000000000000000000000000000000",1)
elarchivo.close
if primero =0 or segundo=0 then
objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok\"&f.name
movidos = movidos+1
end if
next
if movidos = 0 then
msgbox "No se ha movido ningún archivo"
else
msgbox "Se han movido " & movidos &" archivos"
end if
 :-\
En línea
Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #67 en: 23 Junio 2008, 20:37 »

Lo que tambien me puede servir es un for que lea un txt con estos datos:

2008-06-19_590059_NI_890807898_EPS018_86_I.TXT
2008-06-19_621451_NI_890706425_EPS018_86_I.TXT
2008-06-19_621451_NI_890706425_EPS018_86_I.TXT
2008-06-19_621452_NI_890706425_EPS018_86_I.TXT
2008-06-19_621517_NI_810001583_EPS018_86_I.TXT
2008-06-20_102019121_CC_94487480_EPS018_51_I.TXT
2008-06-20_102019121_CC_94487480_EPS018_51_I.TXT
2008-06-20_102088573_CC_5931385_EPS018_01_I.TXT
2008-06-20_102718305_CC_33966379_EPS018_01_I.TXT
2008-06-20_102718305_CC_33966379_EPS018_01_I.TXT
2008-06-20_103000920_CC_31992855_EPS018_01_I.TXT
2008-06-20_103000920_CC_31992855_EPS018_01_I.TXT
2008-06-20_103161002_CC_16638978_EPS018_01_I.TXT

Y me cree un txt con las lineas que se repiten.
En línea
Novlucker
Moderador Global
*****
Conectado Conectado

Mensajes: 7.309


Yo que tu lo pienso dos veces!


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #68 en: 23 Junio 2008, 20:44 »

Te había enviado un privado, para no seguir llenando el post  :xD

Cual es el texto que aparece en el error?
También hay que tener en cuenta que la carpeta C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok debe de existir

Saludos
En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #69 en: 24 Junio 2008, 14:52 »

Gracias Novlucker ya funciona.  ;D

Aunque por curieosidad... como me refiero a la linea siguiente de un archivo? :huh:
No creo que se entienda asi... si tengo un txt asi:
A
B
B
C

Y quiero comparar lineas, linea1==lineasiguente... y que sea recursivo... y en batch...
(falta que quiera que tambien me sirva un café)
En línea
sirdarckcat
Absolutamente no es (por ningun motivo):
CoAdmin
*****
Desconectado Desconectado

Mensajes: 6.391


xDDD


Ver Perfil WWW
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #70 en: 25 Junio 2008, 01:26 »

no puedes definir variables locales en batch.. tendrias que emularlas con prefijos, o algo similar.. por lo que per-se, la recursión no existe en batch
En línea

Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #71 en: 25 Junio 2008, 19:29 »

Hola! tengo otra preguntica... quiero abrir un xls desde el batch, pero este queda bloqueado hasta que cierre excel, ¿como hago para que continue asi este abierto el xls?
En línea
Novlucker
Moderador Global
*****
Conectado Conectado

Mensajes: 7.309


Yo que tu lo pienso dos veces!


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #72 en: 25 Junio 2008, 19:51 »

Supongo que para ejecutarlo estas poniendo....

Código:
excel.exe

En lugar de eso debes de poner......

Código:
start excel.exe
  ;)

El code te quedará algo como esto
Código:
cd %programfiles%\microsoft office\office11
start excel.exe
Saludos
« Última modificación: 25 Junio 2008, 19:55 por Novlucker » En línea

Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD
"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Xen11

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #73 en: 31 Julio 2008, 06:04 »

Hola que tal, quiero que el batch fije la fecha actual, la cambie por una X fija, abra un exe y luego la setee a la que fijo en primer orden, lo que me ocurre es que se setea a la "actual" luego de cerrar el programa, en que me equivoco, o que me falta?

Código:
FOR /F "tokens=1-4 delims=/ " %%a in ('date /t') do (set fecha=%%a-%%b-%%c)

date 29-07-2008

C:\vet\vet.exe

date %fecha%

Muchas gracias!
En línea
Shinseiki86

Desconectado Desconectado

Mensajes: 44


Loading...


Ver Perfil
Re: -> Programación BATCH Avanzada. (nuevo)
« Respuesta #74 en: 13 Agosto 2008, 22:12 »

Hola a todos!

Como puedo hacer que se cree una unidad de red con bat?

Gracias.
En línea
Páginas: 1 2 3 4 [5] 6 7 8 Ir Arriba Imprimir 
Ir a:  





Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

Yashira.org    Videojuegos    indetectables.net    Seguridad Informatica Colombia    Indejuegos    Internet móvil

Noticias Informatica    Seguridad Informática    ADSL    eNYe Sec    Seguridad Wireless    Underground México    Biblioteca de Seguridad

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC