Domanda

Sto cercando di copiare un gruppo di directory.Ho file di testo che hanno un nome simile e ho bisogno di abbinare le directory a quei file di testo per determinare quali directory copiare.

Questo è quello che ho fatto e non riesco a capire come risolverlo.Sto andando in giro nei circoli.

$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination
.

Un esempio di file TXT: 1e03655b-0aac-48b2-82f3-75942084af7a.txt

e cartella: name.1e03655b-0aac-48b2-82f3-75942084af7a

Quindi ho bisogno di trovare le cartelle che corrispondono ai file TXT e copiare la cartella nella directory del file TXT.

Grazie

È stato utile?

Soluzione

Si desidera espandere le proprietà di Basename di quei file di testo (per tagliare la parte .txt) e avere una serie di stringhe come:

1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba
.

Quindi la tua linea $source = deve tirare un elenco di directory e non solo tubatura una stringa verso il basso la tubazione, quindi suggerirei di abbinare i nomi della directory con una corrispondenza regex e controllare per vedere se quella corrispondenza è -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}}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top