Título: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 4 Octubre 2009, 16:31 pm Hola a todos, tengo un batch que procesa arcivos que los usuarios dejan en un directorio; parte del codigo despues de acceder el directorio es:
. . @FOR /F "tokens=1,2,3,4,5,6,7,8,9,10,11,12* delims=+:" %%i IN ('type %2') DO ( . . ) el caso es que funciona perfecto siempre que los archivos sean ASCII, pero si el usuario por equivocación pone en ese diretorio un binario (musica, video etc), entonces el código no funciona, quisiera saber si hay una instrucción que se ponga previa al tratatamiento de archivo (for) que pueda identificar el tipo de archivo y así saltar el for. Gracias por la ayuda que me puedan dar al respecto Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: kevlar en 4 Octubre 2009, 23:08 pm Lo unico que se me ocurre es que uses la extensión del archivo para saltar el for if %~x2 EQU txt ( REM tu for ) Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: FranciskoAsdf en 4 Octubre 2009, 23:15 pm podría ser con un IF ? a ver por ejemplo:
suponiendo que estas en "%UserProfile%\Escritorio\" sería algo como Código Sería algo asi, obviamente tu tienes que ir añadiendo extensiones.- Se puede hacer con for pero no me acuerdo como es, en el foro habia un post donde mostraban un codigo que movian archivos con extesiones especificas a carpetas con FOR, aunque io creo que es lo mismo xD. Saludos espero haberte ayudado Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 5 Octubre 2009, 02:37 am Mil gracias por sus prontas respuestas, tomaré la idea que me están sugiriendo, pero filtraré más bien las extensiones de los archivos que procesaré que son menos que las posibles que puedan poner los usuarioe en el directorio, el programa procesará solo los txt, dat y los que no tengan extensión, aqui mi duda como pregunto si el archivo no tiene extesión? el codigo de filtro antes del for queda así, pero faltaría preguntar sin no tiene extesión.
if %~x1 ==.txt GOTO :PROCESAASCII if %~x1 ==.TXT GOTO :PROCESAASCII if %~x1 ==.dat GOTO :PROCESAASCII if %~x1 ==.DAT GOTO :PROCESAASCII GOTO :PROCESABINARIO Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: FranciskoAsdf en 5 Octubre 2009, 02:47 am puede ser algo asi
Código
pruebalo a ver si te funciona, aunque mmm tengo mis dudas, o puedes probar con: Código
porke si no tiene extension quedaria vacio :S... Sorry por no poder ayudar mas, pero no se me ocurre otra cosa, espero que te funcione ^^ Saludos Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 5 Octubre 2009, 02:59 am la instrucción ;
if %~x1 =="" GOTO :ProcesaAscii no funciona da error porque esta vacio. se te ocurre otra manera? Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: 0x0309 en 5 Octubre 2009, 06:23 am Podrías hacer:
Código: set rutaArchivo=C:\archivo.txt Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 5 Octubre 2009, 17:30 pm Muchas gracias por tu ayuda, ademas me gusta la forma en que encierras el filtro, pero sigue quedando afuera los archivos que no tienen extensión y que si deben ser procesados. Se te ocurre otra forma de que formen parte del filtro?
Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: 0x0309 en 5 Octubre 2009, 19:21 pm Claro, reemplaza por esto:
Código: for %%f in ("%rutaArchivo%") do for %%e in (.txt .src .log "") do if "%%~xf"=="%%~e" goto :Valido Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 5 Octubre 2009, 20:21 pm PERFECTO, funciona como yo quería, MIL gracias por tu ayuda.
Saludos Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 6 Octubre 2009, 00:45 am Mil gracias a todos los que me ayudaron. (SOLUCIONADO)
Título: Re: Identificar el tipo de archivo antes de procesarlo [batch] Publicado por: Aranguez en 13 Octubre 2009, 18:18 pm SOLUCIONADO gracias a todos
|