Insertar una misma carpeta en varias carpetas automáticamente.
brucine Mensajes publicados 24727 Fecha de registro Estado Miembro Última intervención -
Hola,
tengo una carpeta "Fichas de Clientes" con 1940 subcarpetas que corresponden a los clientes nominativamente. Me gustaría insertar 4 sub-subcarpetas en las subcarpetas sin tener que copiar y pegar 1 y 1940 veces.
No quisiera pasar por un VBA que no domino.
Sin embargo, logré crear la carpeta "Fichas de Clientes" y sus subcarpetas a través de una columna de Excel y el comando cre_dossier.bat después de haber pasado por el Bloc de notas.
Quizás sea una pista.
Si alguien tiene una solución sencilla...
Gracias de antemano por sus ideas,
12 respuestas
Hola,
En principio no debería crear ningún problema en batch con un bucle FOR que cree una subcarpeta en cada una de las carpetas, pero no estoy seguro de entender bien la solicitud.
Quieres crear entonces en el nivel 3 4 carpetas en cada una de las carpetas, que estén vacías e idénticas para cada una de las carpetas de nivel 2?
Sería más productivo el script si proporcionas un ejemplo de esta estructura, ruta de la carpeta fuente que se llama "Fichas Clientes" si he entendido correctamente, y nombres ficticios de 2 clientes y de las 4 subcarpetas correspondientes.
Hola,
Primero, gracias por el interés demostrado en mi solicitud, y sí, no me expreso necesariamente en lenguaje informático ...
Dicho esto, por ejemplo
Rango 1 Fichas de Clientes
Rango 2 Cliente A
Rango 3 Mensajería
Rango 3 Ruta
Rango 3 Logística
Rango 3 Acarreo
Rango 2 Cliente B
Rango 3 Mensajería
Rango 3 Ruta
Rango 3 Logística
Rango 3 Acarreo
Etc ...
Si los rangos 1 y 2 están bien creados en mi estructura, son los rangos 3 los que me gustaría insertar de manera "automatizada" en los archivos del Rango 2 para no reproducir 1940 pegados!
Y efectivamente, están vacíos.
¿Es más claro?
Gracias por tu ayuda,
Hola,
He reemplazado los espacios por guiones y he eliminado el acento agudo, los resultados con caracteres especiales son a menudo impredecibles y supuse que la carpeta en el rango 1 se encontraba en la raíz de E:\
Supongo que las carpetas de rango 2 ya existen.
@echo off FOR /F %%a in ('dir /a:d /b /s "E:\Fichas_Clientes"') DO SET CHEMIN=%%a & CALL :PROCESS GOTO EOF :PROCESS SET CHEMIN=%CHEMIN:~0,-1% MD %CHEMIN%\Mensajería MD %CHEMIN%\Ruta MD %CHEMIN%\Logística MD %CHEMIN%\Afrete exit /b :EOF
¡Guau, GRACIAS, la raíz es "Y", bueno eso puedo manejarlo ...
Pero, ¿debo colocar esta codificación a través del "Símbolo del sistema"?
Gracias por tu respuesta y el tiempo dedicado.
Archivo de texto creado en el escritorio y llamado loquequiero.cmd / copiado/pegado ejecutado con cambio de raíz de E:\ por Y:\
Pero, debo estar fallando en alguna parte, he puesto Y como raíz, pero el verdadero nombre del servidor es:
comercial (\\192.168.2.XX)(Y:)
¿Hay alguna relación?
No puedo probar, soy jubilado, no tengo más PC en red.
Incluso si tu unidad está mapeada con la letra Y, no puedes dirigirla directamente desde la línea de comandos.
Si el nombre del PC al que quieres acceder es "comercial", intenta calificando completamente la ruta de red en la forma \\comercial\ o \\192.168.2.xx\ antes de la ruta de la carpeta de destino en esa unidad.
Probablemente sea necesario, si eso no es suficiente, acceder a esa unidad a través de un comando previo NET USE, con el nombre de usuario y la contraseña a la clave:
https://ss64.com/nt/net-use.html
... Efectivamente, estaba en la misma reflexión después de algunos intentos infructuosos, efectivamente la memoria USB puede ser una solución rápida (prueba mañana, no tengo una conmigo), y si pasara directamente por:
C:\Users\c.ch...\OneDrive - IMANY\Documents
Imagino que después de IMANY\Documents, tendré que añadir \Ficheros_Clientes ? ¿Y listo?
Hola brucine, genial, la transferencia y la creación de los subcarpetas ha funcionado.
Entonces, nueva pregunta para automatizar lo siguiente: Digamos,
tengo 2 carpetas A y B,
A-Rango 1- "Cuadrículas"
Rango 2 - unas 50 subcarpetas (clientes) en las que se encuentran ARCHIVOS de cuadrículas de tarifas
B-Rango 1- La "Dossiers_Clients" que acabo de crear con el nombre de los clientes + las subcarpetas ...
Entonces, en lugar de copiar / pegar los archivos por cliente en la carpeta "Cuadrícula" para transferirlos en el "Dossiers_Clients" y la subcarpeta correspondiente al nombre del cliente, me gustaría que la transferencia se haga directamente.
Para eso, tomaremos solo una raíz D:\ y, por supuesto, los nombres de los clientes estarán escritos de manera idéntica de un archivo a otro para la correspondencia.
¿Es posible?
¡Gracias a las celdas grises por el trabajo realizado!
Hola,
de nuevo una pregunta previa, no estoy seguro de haber entendido bien la jerarquía de los rangos.
Se trata efectivamente (he puesto fotos como tarifas) de mover los archivos de abajo a la raíz del nombre correspondiente arriba en desorden (sin crear una subcarpeta Tarifas) y según esta estructura, a corregir si es necesario?
Si c'est le cas, ça donne ça, tu remplaceras E: par D:
Détruire ensuite le dossier source vide soit à la main soit par une syntaxe
RD /S /Q
@echo off FOR /F %%a in ('dir /a:d /b /s "D:\Grilles"') DO SET GRILLES=%%a & CALL :PROCESS1 GOTO EOF :PROCESS1 SET GRILLES=%GRILLES:~0,-1% SET CLIENT=%GRILLES:~11% CALL :PROCESS2 exit /b :PROCESS2 MOVE %GRILLES%\*.* D:\Dossiers_Clients\%CLIENT% exit /b :EOF
Hola brucine,
¡Esta colaboración es genial!
Sí, creo que has entendido mi solicitud y la estructura de los rangos parece corresponder.
Imagino que debo pasar por un archivo de texto para ejecutar esta función, ¿verdad?
Sin embargo, no sé sobre: "eliminar el archivo ya sea mediante una sintaxis
RD /S /Q"
Haré una prueba a pequeña escala durante el día.
Por supuesto, te mantendré informado.
Haré una prueba a pequeña escala para ver si funciona.
Hasta luego,
Hola,
No, es un script ejecutable toto.cmd, como antes.
Para probar sin afectar (simulación simple) utiliza un segundo script modificado como sigue:
@echo off FOR /F %%a in ('dir /a:d /b /s "E:\Grilles"') DO SET GRILLES=%%a & CALL :PROCESS1 GOTO EOF :PROCESS1 SET GRILLES=%GRILLES:~0,-1% SET CLIENT=%GRILLES:~11% CALL :PROCESS2 exit /b :PROCESS2 rem MOVE %GRILLES%\*.* E:\Dossiers_Clients\%CLIENT% ROBOCOPY /L /MOV /NP /NS /NJH /NJS "%GRILLES%" "E:\Dossiers_Clients\%CLIENT%" pause exit /b :EOF El comando ROBOCOPY te dará una salida en pantalla de los archivos "copiados" y de su ubicación sin ninguna acción.
Supongo que al final de la operación la carpeta E:\Grilles y sus subcarpetas se han vuelto innecesarias; o las elimino manualmente con el ratón, o escribo justo antes de :EOF
RD /S /Q "E:\Grilles"

Finalmente, vuelvo sobre lo que validé, porque no es exactamente eso ...
Adjunto, mi estructura de ARCHIVOS Excel de tablas de tarifas (finalmente no son subcarpetas o la carpeta principal sería el nombre del cliente).
La idea es hacer coincidir un archivo Excel que lleve por ejemplo el nombre "test 2023" con raíz D:\"Grilles", dentro de una carpeta "test 2023" (mismo nombre) con raíz D:\"Doccisers_Clients".
Dicho de otra manera, hacer entrar un archivo en una carpeta del mismo nombre que tiene la misma raíz.
¿Es más claro y realizable?
Gracias por todas estas neuronas en ebullición.
Lo que se concibe bien se enuncia claramente...
Habrá que deshacerse de la extensión de archivo (.xls) en el nombre de la carpeta, sigo teniendo reservas sobre los espacios en los nombres de archivo (y por lo tanto de carpetas); supongo que la nueva carpeta debe tener el nombre completo del archivo fuente, no una parte que podría ser común (2023) de lo contrario se va a volver infecto, y que las carpetas destino no existen previamente.
También atención si los nombres de archivo son muy largos, podemos llegar a ser rechazados por una longitud excesiva del camino de acceso a la carpeta y luego al archivo destino.
Antes de volver a comenzar una vez más, ¿así?
Antes:
¿Todavía no estoy seguro.
Por ejemplo, el expediente ALU Y PLÁSTICO 2023 ya existe previamente en Dossiers_Clients (qué idea tan extraña...) o debo crear uno antes de mover el archivo ALU Y PLÁSTICO 2023.xls que se encuentra en la carpeta Grilles y que tiene exactamente el mismo nombre?
Pregunta subsidiaria que es importante y que no vemos ya que no se ven las extensiones, la necesitaremos para hacer limpieza, ¿son todos archivos xls con una versión antigua de Excel, no xlsx?
Entonces, para ser sincero, voy a cambiar previamente el nombre de los archivos .xls para que correspondan a las carpetas de los clientes, en la Carpeta_Clientes.
Así que NO HACE FALTA CREARLO.
Todos los nombres de los clientes ya existen EN la carpeta "Carpeta_Clientes".
Y sí, versión antigua de Excel, así que .xls para los archivos.
eso, si es la versión definitiva, no es complicado.
@echo off FOR /F %%a in ('dir /b "E:\Grilles"') DO SET FICHIER=%%a & CALL :PROCESS1 pause GOTO EOF :PROCESS1 SET FICHIER=%FICHIER:~0,-1% SET DOSSIER=%FICHIER:~0,-4% rem MOVE E:\Grilles\%FICHIER% E:\Dossiers_Clients\%DOSSIER% XCOPY /L /I /F "E:\Grilles\%FICHIER%" "E:\Dossiers_Clients\%DOSSIER%" exit /b :EOF Las líneas pause, XCOPY y el prefijo rem son para probar en la pantalla sin hacer nada.
Si el resultado es satisfactorio, quita pause y elimina la línea XCOPY (o bien quita el rem delante de MOVE y ponlo delante de XCOPY).
Prueba realizada a pequeña escala.
Resultado: ¡MÁGICO!
Me extiendo a todos los Archivos/Carpetas, si tengo tiempo durante el día.
Un gran GRACIAS por este acompañamiento ...
"No es complicado" dice brucine ... ¡Pero aún así!!!
Hasta pronto tal vez ...
-
Transferencia de fotos de mi teléfono inteligente a mi computadora
a las 19:39 -
Detección de usuarios no deseados en tu wifi
a las 19:25 -
Mi impresora ya no se conecta a mi pc
a las 19:04 -
Hzgsp3.uppollia.com
a las 18:50 -
Problema de texturas en enshrouded
a las 18:42 -
El subwoofer bose acoustimass 300 ya no se conecta
a las 18:31 -
Pc se reinicia al azar durante el juego sin pantalla azul
a las 18:21 -
Más de sonido de samsung a 14
a las 18:07 -
No hay sonido en mi pc
a las 17:48 -
Imposible iniciar pc
a las 16:53



