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

¿Fue útil?

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}}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top