Copie los directorios cuando su nombre coincide con archivos TXT:
-
26-12-2019 - |
Pregunta
Estoy tratando de copiar un montón de directorios.Tengo archivos de texto que tienen un nombre similar y necesito coincidir con los directorios a los archivos de texto para determinar qué directorios para copiar.
Esto es lo que he hecho y no puedo averiguar cómo arreglarlo.Voy en círculos.
$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination
Un ejemplo de un archivo TXT: 1e03655b-0aac-48b2-82f3-75942084af7a.txt
y carpeta: name.1e03655b-0aac-48b2-82f3-75942084af7a
Por lo tanto, necesito encontrar las carpetas que coincidan con los archivos TXT y copiar la carpeta en el directorio de archivos TXT.
gracias
Solución
Desea ampliar las propiedades del nombre de base de esos archivos de texto (para cortar la parte .txt) y tener una matriz de cadenas tales como:
1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba
Luego, su línea $source =
necesita para tirar de un listado de directorio y no solo ponga una cadena de la tubería, y luego sugeriría coincidir con los nombres de directorio con una coincidencia de regex y verificar si esa coincidencia es -in $txtfiles
.
$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Filter *.txt | Select -ExpandProperty BaseName
$source = "..\..\..\Images\"
GCI $source -Directory | ?{ $_.Name -match "(\w{8}-\w{4}-\w{4}-\w{4}-\w{12})$" } | %{If($Matches[1] -in $txtfiles){Copy-Item $_.FullName $destination}}