Ejercicio: .bat que distribuye archivos por su extensión

Iniciado por miguelangelss4, 24 Noviembre 2007, 20:47 PM

0 Miembros y 1 Visitante están viendo este tema.

miguelangelss4

Hola, tengo un problema con un .bat
El enunciado del ejercicio es: Dado un directorio con archivos de distintas extensiones dentro, el bat deberá crear una carpeta dentro del directorio donde están los archivos para cada extensión de archivo, con el nombre DIRext y luego mover cada archivo a una carpeta en función de su extensión, de forma que dada la estructura siguiente:

+---DIRECTORIO
       -  1.exe
       -  2.exe
       -  1.doc
       -  1.txt
       -  2.txt

El resultado tras aplicar el bat, debería ser:

+---DIRECTORIO
      +---DIRexe
      |            -  1.exe
      |            -  2.exe
      +---DIRdoc
      |            -  1.doc
      \---DIRtxt
                   -   1.txt
                   -   2.txt

He escrito el siguiente código:
@ECHO OFF
CLS
IF "%1"=="" GOTO Vacio
:Bucle
IF "%1"=="" GOTO Fin
IF NOT EXIST %1 GOTO NoExist
GOTO Exist
:Vacio
ECHO Debe introducir un parametro.
GOTO Fin
:NoExist
ECHO --------------------------------------------------------------------
ECHO El archivo %1 no existe en la ubicacion especificada.
ECHO Asegurese de que la ubicacion y el nombre del archivo son correctos.
TYPE Espacios.txt
ECHO FICHERO: %1
ECHO UBICACION: %~p1
ECHO --------------------------------------------------------------------
GOTO Param
:Exist
MD %~p1\DIR%~x1
MOVE %1 %~p1\DIR%~x1
:Param
SHIFT
GOTO Bucle
:Fin

Y funciona casi perfectamente, solo que en vez de crear DIRexe, DIRtxt y DIRdoc me ha creado las carpetas DIR.exe, DIR.txt y DIR.doc; y además de eso el bat está hecho para que se cree una carpeta por cada archivo, y como hay dos .exe y dos .txt me sale el mensaje de "ese directorio ya existe y no se puede crear..." y me gustaría corregir esas dos cosas, si es posible.

NOTA: estoy empezando en esto y llevo solo un día estudiando los .bat, asíque por favor no os salgais de lo más básico.


GRACIAS