AYUDA BATCH COMODIN ?

Iniciado por japarrado, 18 Julio 2013, 22:01 PM

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

japarrado

Buen día amigos, he encontrado excelente información en este foro, por este motivo recurro a ustedes.

Tengo un problema, estoy elaborando un .bat para mover los archivos que cumplan la siguiente característica:
??_T????.sql (dos letras cualesquiera, un raya al piso, seguido de una T y por ultimo 4 letras cualesquiera; la extensión de todos los archivos es .sql)
puedo tener archivos con los siguientes nombres, por ejemplo:

CP_TOITM.sql
FD_TOPER.sql
FD_TINAC.sql


tengo la siguiente parte de código en el script:

Código (dos) [Seleccionar]
FOR %%a in (??_T????.sql) DO (
 move %%a %v_incidente%\%v_incidente%\SCRIPTS
 @echo @@%%a   >> %v_incidente%\%v_incidente%\SCRIPTS\INSTALADOR.sql
)


el problema que tengo es que ademas de estarme moviendo los archivos con cuatro letras despues de "_T" tambien me mueve archivos como:
AD_TCLTB_COM.sql
AD_TPLAN_PKY.sql


Los  cuales debo mover después en otra parte del código con:

Código (dos) [Seleccionar]
FOR %%a in (??_COL*.sql) DO (
 @echo @@%%a  >> %v_incidente%\%v_incidente%\SCRIPTS\INSTALADOR.sql
 move %%a %v_incidente%\%v_incidente%\SCRIPTS
)


No he podido limitar el for para que solo me mueva los archivos que necesito.

Como lo podría hacer? que tengo mal?
Muchas gracias por su colaboración, que tengan un excelente día.

Eleкtro

@japarrado

Hola,
Usa el botón de insertar código, lee mi firma.






Cita de: japarrado en 18 Julio 2013, 22:01 PMel problema que tengo es que ademas de estarme moviendo los archivos con cuatro letras despues de "_T" tambien me mueve archivos como:

Cita de: japarrado en 18 Julio 2013, 22:01 PM
que tengo mal?

No hay ningún problema con dicho FOR, el patrón de búsqueda es correcto y no matchea archivos que tengan más de 4 caracteres después de la "T". El problema está en otra parte del código que no nos has mostrado todavía.

Puedes probar esto, pero es exáctamente lo mismo, y como ya digo tu primer FOR funciona corréctamente:

Código (dos) [Seleccionar]
FOR /F %%a in ('Dir /B /S "??_T????.sql"')  DO (
echo %%a
  rem move %%a %v_incidente%\%v_incidente%\SCRIPTS
rem  @echo @@%%a   >> %v_incidente%\%v_incidente%\SCRIPTS\INSTALADOR.sql
)


Saludos








Meine programmen

Cita de: EleKtro H@cker en 19 Julio 2013, 12:09 PM
Puedes probar esto, pero es exáctamente lo mismo, y como ya digo tu primer FOR funciona corréctamente:
Yo probe desde la consola
FOR %A IN (??_T????.sql) DO (echo %A)
Teniendo dos archivos (HN_TGGGH.sql y HN_TGG_TGH.sql) y me devuelve los dos archivos. Con este codigo en cambio si que me ha devuelto solo el primero:
setlocal enabledelayedexpansion
FOR %%a in (??_T????.sql) do (set a=%%a
set a=??!a:~2,2!????!a:~8,4!
if !a!==??_T????.sql (echo %%a))

Luego probe tambien tu codigo
Cita de: EleKtro H@cker en 19 Julio 2013, 12:09 PM
Código (dos) [Seleccionar]
FOR /F %%a in ('Dir /B /S "??_T????.sql"')  DO (
echo %%a
  rem move %%a %v_incidente%\%v_incidente%\SCRIPTS
rem  @echo @@%%a   >> %v_incidente%\%v_incidente%\SCRIPTS\INSTALADOR.sql
)

Y me devuelve tambien los dos archivos.
REMEMBER! Reality is an illusion, the universe is a hologram, BUY GOLD! BYE!!


Eleкtro

#3
@Meine programmen

Lo acabo de testear de la manera en la que has comentado y exáctamente con los dos mismos nombres de archivo,
Sigo reafirmando que el código de @japarrado funciona y no necesita ninguna modificación, al menos bajo Windows 8.

Es óbvio que si ustedes dos dicen que no funciona entonces aquí hay un nuevo problema descubierto, el problema es que en la versión de Windows que estén utilizando hay un bug respecto al keyword: "?".

La solución es actualizar la plataforma de Windows, o seguir las indicaciones del compañero @Meine programmen.

PD: Siento no haber podido ayudar de mejor forma esta vez, era imposible deducir que se trataba de un bug de una versión anterior de Windows, era más fácil asumir que el usuario se habia equivocado al afirmar que NO funcionaba el código.

Un saludo!