BAT??? para buscar un arcivo y copiarlo

Iniciado por Kenito, 21 Octubre 2008, 10:53 AM

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

Kenito

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.

Kenito

Estoy leyendo por ahi que podria llegar a usar el comando FOR, podeis echarme una mano de ver como funciona???

Novlucker

#2
Buenas.. aquí tienes, no lo he hecho en bat, sino en vbs (simplemente guardalo con esta extensión)

Código (vb) [Seleccionar]
set objfso = createobject("scripting.filesystemobject")
set objshell = createobject("wscript.shell")
objshell.run "cmd /c cd \ & dir /s /b archivo.txt > %temp%\tempfile.txt",vbhide,true
'Debes de cambiar archivo.txt, por el nombre de tu archivo a buscar
set temp = objfso.getspecialfolder(2)
set tempfile = objfso.opentextfile(temp & "\tempfile.txt",1)
directorio = tempfile.readline
tempfile.close
objfso.deletefile temp & "\tempfile.txt"
objfso.movefile directorio, "c:\carpetadestino"
'Debes de cambiar c:\carpetadestino por la carpeta a
'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 ;)
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Kenito

Un millon de gracias, en serio no se como puedo agradecertelo.

arcanset

o en bat... tambien podrias poner 0% y el archivo se autobusca

43H4FH44H45H4CH49H56H45H

Aqui va uno en bat:
@echo off
FOR /R C:\\ %%a in (archivo.TXT) DO COPY "%%a" C:\\folder\\backup.txt

-R IP
:0100
-A 100 
2826:0100 MOV AH,09
2826:0102 MOV DX,109
2826:0105 INT 21
2826:0105 MOV AH,08
2826:0105 INT 21
2826:0107 INT 20
2826:0109 DB 'MI NICK ES CODELIVE.$' 
2826:0127 
-R BX
:0000
-R CX
:20
-N CODELIVE.COM
-W