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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Identificar el tipo de archivo antes de procesarlo [batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Identificar el tipo de archivo antes de procesarlo [batch]  (Leído 6,772 veces)
Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Identificar el tipo de archivo antes de procesarlo [batch]
« 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


En línea

kevlar

Desconectado Desconectado

Mensajes: 27



Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #1 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

)



En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #2 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
  1. @echo off
  2. REM codigo anterior al for
  3. Md tempfiles
  4. If Exist *.jpg (Move /y *.jpg "%UserProfile%\Escritorio\tempfiles\")
  5. If Exist *.avi (Move /y *.avi "%UserProfile%\Escritorio\tempfiles\")
  6. REM el for


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
En línea

Asdf debería ser algún tipo de función.
Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #3 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
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #4 en: 5 Octubre 2009, 02:47 am »

puede ser algo asi

Código
  1. if %~x1 ==. GOTO :ProcesaAscii
  2. Goto :ProcesarBinario
  3.  

pruebalo a ver si te funciona, aunque mmm tengo mis dudas, o puedes probar con:

Código
  1. if %~x1 =="" GOTO :ProcesaAscii
  2. Goto :ProcesaBinario
  3.  

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
En línea

Asdf debería ser algún tipo de función.
Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #5 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?
En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #6 en: 5 Octubre 2009, 06:23 am »

Podrías hacer:

Código:
set rutaArchivo=C:\archivo.txt

for %%f in ("%rutaArchivo%") do for %%e in (.txt .src .log) do if "%%~xf"=="%%e" goto :Valido


:noValido
echo.Extension no valida.
goto :eof

:Valido
echo.Valido
pause

En línea

Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #7 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?
En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #8 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
En línea

Aranguez

Desconectado Desconectado

Mensajes: 14


Ver Perfil
Re: Identificar el tipo de archivo antes de procesarlo [batch]
« Respuesta #9 en: 5 Octubre 2009, 20:21 pm »

PERFECTO, funciona como yo quería, MIL gracias por tu ayuda.

Saludos
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
EOF en archivo antes de su verdadero final
Programación C/C++
XafiloX 8 3,920 Último mensaje 3 Diciembre 2011, 13:59 pm
por XafiloX
[BATCH] Tipo de dato ARRAY en Batch
Scripting
BatchianoISpyxolo 3 8,239 Último mensaje 24 Julio 2012, 22:50 pm
por AgnesBlack
Identificar tipo de fichero según magic numbers
Windows
ccrunch 2 4,212 Último mensaje 25 Julio 2013, 01:17 am
por ccrunch
No puedo identificar o encontrar este tipo de escritura.
Dudas Generales
Esky 0 1,686 Último mensaje 2 Marzo 2015, 01:20 am
por Esky
Identificar el tipo de codificación
Criptografía
THEGAME008 1 4,275 Último mensaje 31 Agosto 2020, 20:35 pm
por el-brujo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines