Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: nniki999 en 16 Enero 2016, 15:43 pm



Título: asignar ruta a variable
Publicado por: nniki999 en 16 Enero 2016, 15:43 pm
Buenas tardes,

estoy intentando hacer lo siguiente: buscar si existe un archivo que comience por "abcd" en una ruta determinada, y si existe, asignar la ruta a una variable.

Encontrar el archivo ya lo logro hacer, y logro también escribir la ruta en un archivo:

Código:
 dir /a/b/s "D:\directorio\subdirectorio" | find /I "abcd" >>log.txt

Pero lo de asignarlo a a una variable (por ejemplo ruta).... no lo consigo! Tengo algunos intentos, seguramente con sintaxis de otros lenguajes...:

Código:
set ruta
dir /a/b/s "D:\directorio\subdirectorio" | find /I "abcd" >%_ruta%

o

set ruta = dir /a/b/s "D:\directorio\subdirectorios" | find /I "abcd"

Todas las ideas seran muy agradecidas!

Saludos


Título: Re: asignar ruta a variable
Publicado por: Eleкtro en 16 Enero 2016, 19:37 pm
Citar
Código:
set ruta = dir /a/b/s "D:\directorio\subdirectorios" | find /I "abcd" 

Batch es un lenguaje muy limitado, en el cual no puedes asignar directamente la salida o retorno de un comando a una variable.

Lo que puedes hacer, es utilizar un For /F de la siguiente manera:

Código
  1. @Echo OFF
  2.  
  3. Set "fullPath="
  4.  
  5. For /F "Delims=" %%# In (
  6. 'Dir /A /B /S "X:\" ^| Find /I "..."'
  7. ) Do (
  8. Set "fullPath=%%~f#"
  9. Break
  10. )
  11.  
  12. Echo "%fullPath%"
  13.  
  14. Pause&Exit /B 0

Saludos


Título: Re: asignar ruta a variable
Publicado por: nniki999 en 16 Enero 2016, 21:16 pm
muchas gracias! solucionado!

y si.... quisiera utilizar la variable fullpath para copiar un archivo, pero la ruta que contiene tiene un directorio de más de 8 carácteres? Tendría que editar la variable para poner las comillas (para evitar el mensaje "el sistema no puede encontrar el archivo"? O hay algún truco para que pueda leer los directorios de nombre largo sin problemas?

Gracias de nuevo!

(debo abrir un tema nuevo?)


Título: Re: asignar ruta a variable
Publicado por: Eleкtro en 17 Enero 2016, 05:09 am
y si.... quisiera utilizar la variable fullpath para copiar un archivo, pero la ruta que contiene tiene un directorio de más de 8 carácteres? Tendría que editar la variable para poner las comillas (para evitar el mensaje "el sistema no puede encontrar el archivo"? O hay algún truco para que pueda leer los directorios de nombre largo sin problemas?

¿De donde sacas esa idea?, quiero decir, por defecto en la CMD y la variable de FOR se asigna y se utilizan los nombres largos en lugar de los nombres cortos o DOSNAME 8.3.

¿Qué S.O. estás utilizando, DOS, o Windows? ...¿y qué versión?.

¿Te has asegurado que el problema realmente trata de un nombre corto, utilizando el comando Echo para comprobarlo?:
Código
  1. Echo %var%

Si estás utilizando un código adaptado y con mayores diferencias del que te mostré, publícalo aquí para poder examinarlo.

Sin saber las respuestas a las preguntas que te hice, yo creo que el motivo de que no te reconozca el directorio debe ser por que la ruta incluye espacios en blanco pero no has encerrado la variable en comillas dobles para que esos espacios en blanco formen parte del mismo String. Eso se arreglaría declarando la variable con las comillas:

Código
  1. Set "var=ruta"




(debo abrir un tema nuevo?)

No es necesario, pero gracias por tomarte la molestia de intentar hacer las cosas bien, no es algo que se suela ver xD.

Saludos


Título: Re: asignar ruta a variable
Publicado por: nniki999 en 17 Enero 2016, 14:57 pm
Efectivamente, unos de los directorios tiene un espacio en blanco! No hay nada como saber (y tomarse la molestia)
Gracias