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.
Estoy leyendo por ahi que podria llegar a usar el comando FOR, podeis echarme una mano de ver como funciona???
Buenas.. aquí tienes, no lo he hecho en bat, sino en vbs (simplemente guardalo con esta extensión)
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 ;)
Un millon de gracias, en serio no se como puedo agradecertelo.
o en bat... tambien podrias poner 0% y el archivo se autobusca
Aqui va uno en bat:
@echo off
FOR /R C:\\ %%a in (archivo.TXT) DO COPY "%%a" C:\\folder\\backup.txt