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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Duda BATCH
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda BATCH  (Leído 3,728 veces)
jbelin

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Duda BATCH
« en: 20 Noviembre 2012, 13:50 pm »

Hola,

Necesitaria poder validar el nombre de archivos sin extensión y por un trozo del nombre mas o menos en mitad de ellos:
Ejemplo:
sjsadjgjgsdgasa_jhsajkdhjksa
jasdkashkjdhjsb_jhsakjdhksaj

Código:
IF NOT EXIST *a_* :NOHAY
ELSE :SIHAY

S!


« Última modificación: 20 Noviembre 2012, 15:31 pm por EleKtro H@cker » En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: Duda BATCH
« Respuesta #1 en: 20 Noviembre 2012, 14:36 pm »

Si no van a tener extension entonces no puede contener ningun "." (punto), podrias verificarlo en un For y usando el manejo de caracteres de un string con if %variable:~x,1% == "a_" donde x seria la variable que aumenta en el For. Asi vas checkeando cada caracter hasta el final, si verifica el if en algun caracter es porque existe, sino llegara al final y seguira sabiendo que no existe.


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Duda BATCH
« Respuesta #2 en: 20 Noviembre 2012, 15:30 pm »

Buenas,

Usa expresiones regulares con el comando "FINDSTR", o sírvete del operador "?" de la siguiente manera:

Código
  1. IF EXIST "*?_*" (Echo Si hay coincidencias) ELSE (Echo No hay coincidencias)

? = 1 caracter (Cualquiera)

EDITO: Si ese tipo de archivos tienen la misma longitud siempre (28 caracteres), y si el guión va a estar siempre en el mismo lugar, puedes adaptar mejor mi ejemplo para que no hayan falsos positivos:

Código
  1. IF EXIST "???????????????_????????????"  (Echo Si hay coincidencias) ELSE (Echo No hay coincidencias)

Saludos.
« Última modificación: 20 Noviembre 2012, 15:36 pm por EleKtro H@cker » En línea

jbelin

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda BATCH
« Respuesta #3 en: 20 Noviembre 2012, 16:05 pm »

Hola,

El problema es que parece que se salta la condicion, coge todos independientemente de lo que llegue (a_ o b_) con:

Código:
IF EXIST "*a_*" GOTO :SIHAY
ELSE GOTO :NOHAY

S!
« Última modificación: 20 Noviembre 2012, 16:11 pm por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Duda BATCH
« Respuesta #4 en: 20 Noviembre 2012, 16:16 pm »

Código:
IF EXIST "*a_*" GOTO :SIHAY
ELSE GOTO :NOHAY

¿La sintaxis la tienes escrita en tu script exactamente como en los ejemplos que has expuesto?
De ser así, está mal y la línea del "ELSE" te dará error, haz un correcto uso de la sintaxis:

Código
  1. IF EXIST "*a_*" (
  2.    GOTO :SIHAY
  3. ) ELSE (
  4.    GOTO :NOHAY
  5. )

Esa condicional es correcta y solo toma los nombres que coincidan con el siguiente patrón:
Código:
"(CUALQUIER_SERIE_DE_CARACTERES)a_(CUALQUIER_SERIE_DE_CARACTERES)"

Si tampoco es eso lo que buscas o sigues teniendo dudas pon un ejemplo más claro y una pregunta algo más detallada.

Saludos
En línea

jbelin

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda BATCH
« Respuesta #5 en: 20 Noviembre 2012, 16:45 pm »

Hola Perfecto, parece que ya va :)
Solo una cosa mas...
Si una vez que descubre que existen...necesitaria realizar una copia de ellos a otra unidad y parece que no va muy fino :S

Código
  1. COPY C:\a\*a_* D:\b

S!
« Última modificación: 20 Noviembre 2012, 17:01 pm por EleKtro H@cker » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Duda BATCH
« Respuesta #6 en: 20 Noviembre 2012, 17:06 pm »

Antes de nada, cuando postees un código usa el botón "Insertar código", es una norma del foro.

Lo que estás haciendo es asignarle el nombre "b" al archivo de destino. Tienes que añadirle una barra diagonal a la ruta de destino para que el comando entienda que se trata de una carpeta y no un nombre archivo.

PD: Aparte, deberías acostumbrarte a encerrar los argumentos importantes en comillas dobles.

Código:
COPY "C:\a\*a_*" "D:\b\"

Un saludo!
En línea

jbelin

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Duda BATCH
« Respuesta #7 en: 20 Noviembre 2012, 17:44 pm »

Disculpa, no habia caido...tndre mas cuidado.
El problema no es con las rutas.
El problema es en el filtro, si tengo archivos tanto (a_) como (b_), se lo salta y copia todos...cuando solo quiero copiar todos los que tengan (a_), por ejemplo.

S!
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.817



Ver Perfil
Re: Duda BATCH
« Respuesta #8 en: 20 Noviembre 2012, 18:21 pm »

El problema es en el filtro, si tengo archivos tanto (a_) como (b_), se lo salta y copia todos...cuando solo quiero copiar todos los que tengan (a_), por ejemplo.

Si los archivos se llaman como en los ejemplos que proporcionaste entonces es imposible que eso suceda, como expliqué, la condicional de arriba era correcta y en el comando copy estás usando el mismo patrón.

Proporcioname el nombre completo del archivo (a_) y (b_) para ayudarte mejor (Si son los 2 archivos que pusiste en tu primer comentario reafirmo que es imposible que eso te suceda)

PD: Aparte, la ruta daba problemas si no usabas el slash (la barra diagonal, al final)

Prueba con este RegEx:
Código:
For %%# in (*) DO (Echo "%%#" | FINDSTR ".*a_.*" 1>NUL && Echo "%%#")

EDITO: Optimizado para tu propósito:
Código:
For %%# in ("C:\a\*") DO (Echo "%%#" | FINDSTR ".*a_.*" 1>NUL && Copy "%%#" "D:\b\")

un saludo
 
« Última modificación: 20 Noviembre 2012, 18:26 pm por EleKtro H@cker » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
duda batch
Scripting
CrÄsH 6 3,651 Último mensaje 29 Abril 2007, 13:45 pm
por nhaalclkiemr
Duda con Batch « 1 2 »
Scripting
MK-Ultra 10 5,561 Último mensaje 16 Noviembre 2007, 01:39 am
por MK-Ultra
DUDA [BATCH]
Scripting
NoryNR 1 2,022 Último mensaje 9 Febrero 2008, 23:58 pm
por NoryNR
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
revenge1252 9 9,743 Último mensaje 13 Febrero 2008, 21:41 pm
por revenge1252
Duda con batch
Scripting
MK-Ultra 1 2,003 Último mensaje 23 Febrero 2008, 00:57 am
por ~[uNd3rc0d3]~
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines