2 votos

¿Cómo copiar archivos de una carpeta a otra que tiene diferente jerarquía?

Tengo muchos archivos que se almacenan en una jerarquía profunda como esta:

F:\Files\FX\Water\APX\Build\Setup\myfile.mp4
F:\Files\FX\1\2\3\4\otherfile.mp4

y quiero copiarlos en otra unidad que tiene una capa más anidada pero en el nivel inferior de la carpeta:

F:\Files\FX\Water\MICROSOFT\APX\Build\Setup\myfile.mp4
F:\Files\FX\1\MICROSOFT\2\3\4\otherfile.mp4

Así que, como puedes ver, no soy capaz de hacer un simple copiar y pegar. ¿Hay algún comando que pueda ejecutar en cmd o PowerShell que me permita copiar todos los archivos a la vez, anulando los archivos de destino?

Estoy en Windows 10 Pro.

0 votos

He ofrecido una solución que debería funcionar en base a la información que has proporcionado. Espero los comentarios de los usuarios.

0voto

Anaksunaman Puntos 459

Así que, como puedes ver, no soy capaz de hacer un simple copiar y pegar. ¿Hay algún comando que pueda ejecutar en cmd o powershell o incluso una aplicación que me permita copiar todos los archivos a la vez, anulando los archivos de destino?

Tal vez no estoy entendiendo bien tu pregunta, pero deberías poder hacer algo parecido:

robocopy F:\Files\FX\Water\APX\Build\Setup F:\Files\FX\Water\MICROSOFT\APX\Build\Setup *.*

No es necesario que el directorio de destino exista. robocopy debería estar disponible en Windows Vista o posterior y tiene opciones para copiar subdirectorios (según sea necesario).

0 votos

*.* es redundante ya que es el comportamiento por defecto en Robocopy, por lo que incluirlo no hará nada.

0 votos

Entendido. En este caso, pretendía *.* para mostrar dónde pueden ir los archivos (en lugar de, por ejemplo C:\some\path\*.* ). Probablemente debería haber sido más claro.

0 votos

Muchas gracias, pero ¿hay alguna manera de utilizar comodines para Water, APX y Build, ya que cambian en el origen y en el destino de la misma manera. Así que necesito que sean * en la fuente y el objetivo.

0voto

wrecclesham Puntos 608

Puede hacerlo fácilmente con Robocopy.

  1. Abrir una ventana de símbolo del sistema
  2. Ejecute el siguiente comando:

robocopy /e f:\files\fx\water\apx\build\setup f:\files\fx\water\microsoft\apx\build\setup

  • /e debe utilizarse para incluir cualquier subcarpeta (o subcarpeta vacía) que exista en su carpeta de origen. Sin esta opción, Robocopy sólo copiará archivos e ignorará las subcarpetas. Normalmente es mejor incluirla.
  • no es necesario añadir "." ya que Robocopy copia todos los archivos por defecto, por lo que sería redundante.

Actualización:

El OP ha actualizado su pregunta para incluir un requisito para el comodín de la carpeta de la ruta de origen.

Robocopy no admite el uso de comodines en las carpetas de la ruta de origen, ya que los únicos comodines que admite son los que se utilizan en los nombres o las extensiones de los archivos.

Como resultado de esta limitación, Robocopy no puede ayudar al OP aquí. Se requiere una respuesta utilizando una solución de scripting alternativa.

0 votos

Muchas gracias pero ¿hay alguna forma de usar comodines para Water, APX y Build ya que cambian en el origen y en el destino de la misma forma. Así que necesito que sean * en la fuente y el objetivo.

0 votos

¿Puede aclarar cuáles serían los caminos para uno de los otros ejemplos? ¿Por ejemplo, el agua? Es el camino de la fuente: f:\files\fx\water ? ¿Qué pasa con la ruta de destino?

0 votos

Hola, de hecho he actualizado la pregunta. Pero básicamente cualquier cosa bajo FX, es decir, agua, APX y Build puede cambiar, pero cualquiera que sea el cambio, es decir, Fire/BPX/Generic será el mismo en la destrucción, sólo que el destino siempre tienen MICROSOFT derecho bajo FX/FOLDER/MICROSOFT

0voto

Olivier Puntos 1

Hay varias formas de hacerlo: 1) En Powershell

Copy-Item -Path <SourcePath> -Destination <DestinationPath> # -force if already existing at the target

2) Con Cmd

Copy <SourcePath> <DestinationPath> 

Tenga en cuenta que el archivo hereda los permisos de la carpeta padre a la de destino.

0voto

Keith Miller Puntos 1

Esto puede hacerse en PowerShell . Pero es posible que necesitemos alguna aclaración.

¿Este comando lista los archivos que queremos copiar?

gci F:\files\Fx *.mp4 -recurse | select fullname

Si no es así, debe proporcionar los detalles que nos permitan seleccionar los archivos deseados.

Una vez que lo tengas claro, construye tu nuevo camino:

gci F:\files\Fx *.mp4 -recurse | Foreach{
   $folders = $_.Fullname.split('\')
   $NewPath = $Folders[0..3] + 'Microsoft' + $Folders[4..($Folders.Count-1)]
   $NewPath -join '\'
}

Si esas rutas parecen correctas, añada el Copia-artículo cmdlet:

gci F:\files\Fx *.mp4 -recurse | Foreach{
   $folders = $_.Fullname.split('\')
   $NewPath = $Folders[0..3] + 'Microsoft' + $Folders[4..($Folders.Count-1)]
   $NewPath = $NewPath -join '\'
   Copy-Item $_.FullName $NewPath
}

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: