[BATCH] Duda sobre recursividad en directorio y permisos de usuarios

Iniciado por Aeros, 3 Marzo 2015, 20:49 PM

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

Aeros

Hola que tal!

Tengo un problema con la creación de subdirectorios masivos, tengo una lista de 4000 carpetas en las cuales por cada uno tengo que crear subdirectorios iguales para todas y establecer permisos de usuarios diferentes por cada carpeta.

Crear subdirectorios lo hago de la siguiente manera:

Código (dos) [Seleccionar]
for /d /r %i (*) Do  md a b  

Pero de este modo el bucle nunca finaliza y me crea infinitos subdirectorios sobre el directorio donde estoy parado.  :(

Y quisiera saber tambien si dentro del mismo bucle ya le puedo establecer permisos con calcs a cada subdirectorio creado.

por ejemplo CON UN

Código (dos) [Seleccionar]
cacls 1 /t /g certificacion:r  

lo cual quiero que herede los permisos a los subdirectorios.




Gracias y espero que me puedan ayudar!




Eleкtro

La lista de directorios que itera el For /D /R se va actualizando por cada nuevo directorio que encuentra (es decir, por cada subdirectorio que creas) y resulta en una recursividad indeseada, debes utilizar otro tipo de búcle For /F o ForFiles.

El tema de la herencia de permisos para ser sinceros no lo tengo claro, pero si no recuerdo mal Windows trabaja esos aspectos de forma automatizada, tanto el propietario cómo los permisos de un sub-directorio se heredan por si solos al crear dicho sub-directorio sin necesidad de llevar a cabo asignaciones manuales, de todas formas si me estoy equivocando puedes asignarle los permisos que quieras a las carpetas creadas, claro está.

Código (dos) [Seleccionar]
@Echo OFF

Set "folderName=Nueva Carpeta"

For /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "*"') Do (
Echo %%~#
Echo    [+] %%~#\%folderName%
Echo+
(MKDir "%%~#\%folderName%")2>NUL
)

Pause&Exit /B 0


Saludos








Aeros

Cita de: Eleкtro en  4 Marzo 2015, 05:40 AM
La lista de directorios que itera el For /D /R se va actualizando por cada nuevo directorio que encuentra (es decir, por cada subdirectorio que creas) y resulta en una recursividad indeseada, debes utilizar otro tipo de búcle For /F o ForFiles.

El tema de la herencia de permisos para ser sinceros no lo tengo claro, pero si no recuerdo mal Windows trabaja esos aspectos de forma automatizada, tanto el propietario cómo los permisos de un sub-directorio se heredan por si solos al crear dicho sub-directorio sin necesidad de llevar a cabo asignaciones manuales, de todas formas si me estoy equivocando puedes asignarle los permisos que quieras a las carpetas creadas, claro está.

Código (dos) [Seleccionar]
@Echo OFF

Set "folderName=Nueva Carpeta"

For /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "*"') Do (
Echo %%~#
Echo    [+] %%~#\%folderName%
Echo+
(MKDir "%%~#\%folderName%")2>NUL
)

Pause&Exit /B 0


Saludos

Me encanto tu code! lo modifique para que me cree 113 variables, osea 113 rutas diferentes en 4000 capetas pero se me cuelga la pc...

Entonces pense si se podia hacer esto, pero se repite el bucle muchas veces y me crea infinitas carpetas.


Código (dos) [Seleccionar]
@Echo OFF

For /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "*" ') Do (
xcopy c:\cape_copi "%%#" /e
)
Pause&Exit /B 0



En c:\cape_copi estan todos los subdirectorios que quiero copiar, pero se me va copiando a la vez en cada una de las carpetas!


Saludos!

Aeros

Cita de: Aeros en  5 Marzo 2015, 14:53 PM
Me encanto tu code! lo modifique para que me cree 113 variables, osea 113 rutas diferentes en 4000 capetas pero se me cuelga la pc...

Entonces pense si se podia hacer esto, pero se repite el bucle muchas veces y me crea infinitas carpetas.


Código (dos) [Seleccionar]
@Echo OFF

For /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "*" ') Do (
xcopy c:\cape_copi "%%~#" /e
)
Pause&Exit /B 0



En c:\cape_copi estan todos los subdirectorios que quiero copiar, pero se me va copiando a la vez en cada una de las carpetas!


Saludos!

Me faltaba la virgulilla en esta linea :)
xcopy c:\cape_copi "%%~#" /e

Gracias nuevamente!!