elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Copiar un archivo al interior de todas las carpetas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Copiar un archivo al interior de todas las carpetas  (Leído 7,591 veces)
GORSO

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Copiar un archivo al interior de todas las carpetas
« en: 27 Marzo 2009, 20:29 pm »

Hola, querria saber si me podríais ayudar a crear un código cmd o for para la siguiente funcion:

Tengo una carpeta llamada proyecto; dentro de esa tengo 2 carpetas llamadas a y b; dentro de la carpeta a, tengo un archivo llamado leeme.txt con atributos; dentro de la carpeta b tengo un monton de carpetas.
Ejemplo:

Proyecto
carpeta a            carpeta b
         leeme.txt            carpetas ba,ce, to


Pues lo que qioero es hacer un bat, que al ejecutarlo, copie el leeme.txt al interior de las carpetas del la carpeta b, osea, en el ejemplo, a las carpetas ba, ce, to etc...
Eso si, mediante variables o algo tipo: copy leeme.txt ..\b\todaslascarpetasqueempiezenpor a, b, c, d..... pero al dar con una carpeta que no existe, que no le cree, sno, me haria un churro de carpetas :s
Existe algo para hacer eso?
Gracias de antemano. ;-)


En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #1 en: 27 Marzo 2009, 21:29 pm »

Mira no tengo ganas de ensayar batch pero creo que algo así serviría:

Código:
setlocal enableextensions
set directorio=c:\Proyecto
pushd %directorio%
for /r /d %%a in (.\b) do copy "%directorio%\a\leeme.txt" .\
popd
endlocal


« Última modificación: 28 Marzo 2009, 20:35 pm por Leo Gutierrez. » En línea

GORSO

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #2 en: 27 Marzo 2009, 22:41 pm »

No me funciona, solo pega el readme en la carpeta de proyecto nada mas.
Y el comando "c:\proye...." no lo puedo utilizar, ya que esta en un  dispositivo de almacenamiento. tendria que ser a raiz del sitio, tipo ".\" o "..\" :-(

Que le pasa a esto, que no me deja postear= lol
En línea

0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #3 en: 27 Marzo 2009, 23:23 pm »

Código:
setlocal enableextensions
for /f %%a in (".") do set directorio=%%~fa\
pushd "%directorio%\b"
for /r /d %%a in (.) do copy /y "%directorio%\a\leeme.txt" "%%a"
popd
endlocal
pause

el bat debe encontrarse en la carpeta Proyecto.
En línea

GORSO

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #4 en: 28 Marzo 2009, 01:08 am »

Wow, xD funciona!!! al menos al 50% xD
Copia el readme a todas las carpetas seeeee ;-) Graciasssss
Lo que pasa es que tiene el otro 50% :-\ que lo copia tambien a las subcarpetas, auque no ocupa mucho pero weno, pero si mantubiera los atributos seria ya la caña!!
He intentado cambiar el "copy /y" por "attrib +r" pero no se los cambia :-\

Si sabes como darle a los archivos estos atributos, o algo........

De todas maneras, gracias, es un buen trabajo, me quitaste mucho de encima, gracias man!!!
En línea

netoreto

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #5 en: 11 Julio 2011, 10:40 am »

buenas!
sé que ha pasado tiempo, pero igual andáis por ahí...
¿se podría copiar ese txt sólo a  las carpetas que estén vacías?
por ahí he encontrado esto:

for /f «usebackq» %d in («dir /ad/b/s | sort /R») do rd «%d»

para eliminar todas las carpetas vacías, he intentado un "mix", pero nada de nada, es que no tengo ni idea

mil gracias
En línea

SuperDraco


Desconectado Desconectado

Mensajes: 2.505


Crew Dragon


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #6 en: 11 Julio 2011, 11:55 am »

hola, deberías haber creado un nuevo tema con tu pregunta, y no revivir uno del año 2009...

Si no tienes ni idea, vas a tener que aprender un poquito, pero no te asustes, es un poquito solo.

Mezcla vbs + batch.

Con un vbs descartas las carpetas que no están vacías, y luego el resultado, con un FOR en batch, copias el texto a las carpetas que están vacías.





"Comprobar_Carpetas_vacias.vbs"

 
Código
  1. Dim objFileSystem, objTheFolder
  2. Set objFileSystem = CreateObject("Scripting.FileSystemObject")
  3. Set objTheFolder = objFileSystem.GetFolder(wscript.arguments(0))
  4.  
  5. If objTheFolder.size > 1 then
  6. wscript.quit(0)
  7. else
  8. wscript.quit(1)
  9. end if


Si la salida es 0, la carpeta está ocupada.
Si la salida es 1, la carpeta está vacía.



Una forma de usar el vbs para tu propósito sería así:



Código
  1. @echo off
  2.  
  3. REM by PiToLoKo
  4. REM Visita Foro.ElHacker.Net
  5.  
  6. :Carpetas vacias
  7. For /F "Tokens=*" %%a in ('dir /B /S /A:D "LA_RUTA_DEL_DIRECTORIO"') do (
  8. set folder=%%a
  9. call :Comprobar carpeta)
  10.  
  11.  
  12.  
  13. :Comprobar carpeta
  14. wscript "Comprobar_Carpetas_vacias.vbs" "%folder%"
  15.  
  16. If %errorlevel% EQU 0 (
  17. goto:eof
  18. ) ELSE (
  19. copy TUTEXTO.txt "%folder%\"
  20. goto:eof
  21. )


Saludos.
En línea

No he vuelto, solo estoy de paso.
netoreto

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #7 en: 11 Julio 2011, 14:05 pm »

ayy
gracias por la prontísima respuesta,
y perdón por revivir algo tan antiguo, la verdad es que me resulta tan útil esto de rellenar directorios vacíos, que no entiendo cómo nadie ha hecho nada antes igual...
mañana lo pruebo, que se me acaba la hora del curro por hoy,

gracias otra vez,
N.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Copiar un archivo al interior de todas las carpetas
« Respuesta #8 en: 11 Julio 2011, 19:29 pm »

Si se quiere hacer en batch totalmente bastaría con entrar en cada directorio, contar los archivos y si son iguales a 0 que se copie ahí.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Copiar un archivo en todas las subcarpetas
Scripting
Gorky 2 3,539 Último mensaje 8 Noviembre 2008, 16:36 pm
por Gorky
Crear carpetas todas juntas
Programación Visual Basic
Angeldj27 8 4,384 Último mensaje 9 Febrero 2009, 20:47 pm
por Angeldj27
[Solucionado][Batch] Copiar Todas las fotos en una carpeta
Scripting
Geormarsch 2 3,569 Último mensaje 21 Enero 2012, 19:51 pm
por Geormarsch
Copiar un archivo a todas las carpetas [Duda]
Scripting
caramel0rar0 2 3,422 Último mensaje 30 Enero 2012, 21:57 pm
por caramel0rar0
Copiar un archivo a varias carpetas
Scripting
Paco Prieto 0 2,097 Último mensaje 18 Febrero 2019, 21:11 pm
por Paco Prieto
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines