Autor
|
Tema: -> Programación BATCH Avanzada. (nuevo) (Leído 83694 veces)
|
Shinseiki86
Desconectado
Mensajes: 44
Loading...
|
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
|
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  Saludos Prueba esto 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
Mensajes: 44
Loading...
|
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
|
Te he modificado el anterior mensaje para que además el script devuelva un mensaje de cuantos archivos se movieron..... Tu problema es sencillo 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
Mensajes: 44
Loading...
|
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
|
Menos mal que es de pruebas  Es porque en esta línea..... objfso.movefile f.path,"C:\Documents and Settings\tesdcv01\Escritorio\pruebas\ok"&f.name Debe de haber un slash invertido después del okobjfso.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
Mensajes: 44
Loading...
|
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
Mensajes: 44
Loading...
|
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
|
Te había enviado un privado, para no seguir llenando el post  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 existirSaludos
|
|
|
|
|
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
Mensajes: 44
Loading...
|
Gracias Novlucker ya funciona.  Aunque por curieosidad... como me refiero a la linea siguiente de un archivo?  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
|
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
Mensajes: 44
Loading...
|
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
|
Supongo que para ejecutarlo estas poniendo.... excel.exe En lugar de eso debes de poner...... start excel.exe  El code te quedará algo como esto 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
Mensajes: 7
|
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? 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
Mensajes: 44
Loading...
|
Hola a todos!
Como puedo hacer que se cree una unidad de red con bat?
Gracias.
|
|
|
|
|
En línea
|
|
|
|
|
|