Autor
|
Tema: Identificar el tipo de archivo antes de procesarlo [batch] (Leído 6,772 veces)
|
Aranguez
Desconectado
Mensajes: 14
|
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
Mensajes: 27
|
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
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
podría ser con un IF ? a ver por ejemplo: suponiendo que estas en " %UserProfile%\Escritorio\" sería algo como REM codigo anterior al for If Exist *.jpg (Move /y *.jpg " %UserProfile%\Escritorio\tempfiles\" ) If Exist *.avi (Move /y *.avi " %UserProfile%\Escritorio\tempfiles\" ) 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
Mensajes: 14
|
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
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
puede ser algo asi if %~x1 ==. GOTO : ProcesaAscii
pruebalo a ver si te funciona, aunque mmm tengo mis dudas, o puedes probar con: if %~x1 =="" GOTO : ProcesaAscii
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
Mensajes: 14
|
la instrucción ;
if %~x1 =="" GOTO :ProcesaAscii
no funciona da error porque esta vacio. se te ocurre otra manera?
|
|
|
En línea
|
|
|
|
0x0309
Desconectado
Mensajes: 215
|
Podrías hacer: 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
Mensajes: 14
|
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
Mensajes: 215
|
Claro, reemplaza por esto: for %%f in ("%rutaArchivo%") do for %%e in (.txt .src .log "") do if "%%~xf"=="%%~e" goto :Valido
|
|
|
En línea
|
|
|
|
Aranguez
Desconectado
Mensajes: 14
|
PERFECTO, funciona como yo quería, MIL gracias por tu ayuda.
Saludos
|
|
|
En línea
|
|
|
|
|
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
|
3 Diciembre 2011, 13:59 pm
por XafiloX
|
|
|
[BATCH] Tipo de dato ARRAY en Batch
Scripting
|
BatchianoISpyxolo
|
3
|
8,239
|
24 Julio 2012, 22:50 pm
por AgnesBlack
|
|
|
Identificar tipo de fichero según magic numbers
Windows
|
ccrunch
|
2
|
4,212
|
25 Julio 2013, 01:17 am
por ccrunch
|
|
|
No puedo identificar o encontrar este tipo de escritura.
Dudas Generales
|
Esky
|
0
|
1,686
|
2 Marzo 2015, 01:20 am
por Esky
|
|
|
Identificar el tipo de codificación
Criptografía
|
THEGAME008
|
1
|
4,275
|
31 Agosto 2020, 20:35 pm
por el-brujo
|
|