Autor
|
Tema: Duda BATCH (Leído 4,145 veces)
|
jbelin
Desconectado
Mensajes: 4
|
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 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
Mensajes: 1.842
|
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
Mensajes: 9.891
|
Buenas, Usa expresiones regulares con el comando "FINDSTR", o sírvete del operador "?" de la siguiente manera:
? = 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: 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
Mensajes: 4
|
Hola, El problema es que parece que se salta la condicion, coge todos independientemente de lo que llegue (a_ o b_) con: 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
Mensajes: 9.891
|
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: )
Esa condicional es correcta y solo toma los nombres que coincidan con el siguiente patrón: "(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
Mensajes: 4
|
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
S!
|
|
« Última modificación: 20 Noviembre 2012, 17:01 pm por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.891
|
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. Un saludo!
|
|
|
En línea
|
|
|
|
jbelin
Desconectado
Mensajes: 4
|
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
Mensajes: 9.891
|
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: For %%# in (*) DO (Echo "%%#" | FINDSTR ".*a_.*" 1>NUL && Echo "%%#") EDITO: Optimizado para tu propósito: 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda batch
Scripting
|
CrÄsH
|
6
|
4,070
|
29 Abril 2007, 13:45 pm
por nhaalclkiemr
|
|
|
Duda con Batch
« 1 2 »
Scripting
|
MK-Ultra
|
10
|
6,281
|
16 Noviembre 2007, 01:39 am
por MK-Ultra
|
|
|
DUDA [BATCH]
Scripting
|
NoryNR
|
1
|
2,292
|
9 Febrero 2008, 23:58 pm
por NoryNR
|
|
|
Pequeña duda con un comando batch (NUEVA DUDA RELACIONADA)
Scripting
|
revenge1252
|
9
|
10,373
|
13 Febrero 2008, 21:41 pm
por revenge1252
|
|
|
Duda con batch
Scripting
|
MK-Ultra
|
1
|
2,274
|
23 Febrero 2008, 00:57 am
por ~[uNd3rc0d3]~
|
|