Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Kenito en 21 Octubre 2008, 10:53 am



Título: BAT??? para buscar un arcivo y copiarlo
Publicado por: Kenito en 21 Octubre 2008, 10:53 am
Hola chic@s tengo un pequeño problema y la verdad que por mas que he leido ando desorientado hasta en el camino que tengo que coger.

Necesito algo un bat, un script etc etc que haga lo siguiente:

Tengo un archivo en una carpeta la cual no se como se llama. El arcivo siempre tendrá el mismo nombre, pero la carpeta variará en función del nombre que le de el usuario.

La ruta sería (por poner un ejemplo) c:\???\archivo.txt  pues bien necesito copiar ese archivo.txt y mandarlo a una ruta concreta que siempre será la misma.

Por lo que quedaría:

C:\???\ archivo.txt ------------------  c:\prueba\archivo.txt

Este bat o ejecutable o lo que sea lo necesito para muchos pc, por lo que no puedo hacer un bat por pc, porque el nombre de la carpeta será una variable dependiendo del nombre que le dé el usuario, por lo que he descartado la posibilidad de hacer uno por pc.

He estado probando con el comando IF exist pero no me busca dentro de subdirectorios, si hubiese una funcion que hiciese la busqueda dentro de subdirectorios sería genial.

Tambien he probado con Robocopy  usando esta funcion:
robocopy c:\ c:\prueba /S /IF archivo.txt
Y me encuentra el archivo pero me copia la carpeta que contiene el arcivo y el archivo por lo que me deja:
c:\Prueba\???\archivo.txt   por lo que tampoco me sirve, asi que me empiezo a quedar sin soluciones.

A ver si os ha sucedido alguna vez algo parecido.

Muchas gracias.


Título: Re: BAT??? para buscar un arcivo y copiarlo
Publicado por: Kenito en 21 Octubre 2008, 16:21 pm
Estoy leyendo por ahi que podria llegar a usar el comando FOR, podeis echarme una mano de ver como funciona???


Título: Re: BAT??? para buscar un arcivo y copiarlo
Publicado por: Novlucker en 21 Octubre 2008, 21:44 pm
Buenas.. aquí tienes, no lo he hecho en bat, sino en vbs (simplemente guardalo con esta extensión)

Código
  1. set objfso = createobject("scripting.filesystemobject")
  2. set objshell = createobject("wscript.shell")
  3. objshell.run "cmd /c cd \ & dir /s /b archivo.txt > %temp%\tempfile.txt",vbhide,true
  4. 'Debes de cambiar archivo.txt, por el nombre de tu archivo a buscar
  5. set temp = objfso.getspecialfolder(2)
  6. set tempfile = objfso.opentextfile(temp & "\tempfile.txt",1)
  7. directorio = tempfile.readline
  8. tempfile.close
  9. objfso.deletefile temp & "\tempfile.txt"
  10. objfso.movefile directorio, "c:\carpetadestino"
  11. 'Debes de cambiar c:\carpetadestino por la carpeta a
  12. 'la que moveras el archivo

Ten en cuenta que este script solamente recupera un archivo con el nombre indicado, no sirve si pueden haber varios archivos con el mismo nombre, y también puede dar problemas con caracteres especiales en el nombre de archivo, con esto me refiero a por ejemplo "contraseña" (la "ñ" molesta) :P

Como ves, utilizo dir /s /b nombrearchivo.txt para buscar el archivo en cuestión

Saludos ;)


Título: Re: BAT??? para buscar un arcivo y copiarlo
Publicado por: Kenito en 22 Octubre 2008, 10:31 am
Un millon de gracias, en serio no se como puedo agradecertelo.


Título: Re: BAT??? para buscar un arcivo y copiarlo
Publicado por: arcanset en 22 Octubre 2008, 16:52 pm
o en bat... tambien podrias poner 0% y el archivo se autobusca


Título: Re: BAT??? para buscar un arcivo y copiarlo
Publicado por: 43H4FH44H45H4CH49H56H45H en 23 Octubre 2008, 04:52 am
Aqui va uno en bat:
Código:
@echo off
FOR /R C:\\ %%a in (archivo.TXT) DO COPY "%%a" C:\\folder\\backup.txt