Question

J'essaie de copier un tas de répertoires.J'ai des fichiers texte qui portent un nom similaire et je dois faire correspondre les répertoires à ces fichiers texte pour déterminer les répertoires à copier.

C'est ce que j'ai fait et je n'arrive pas à comprendre comment y remédier.Je tourne en rond.

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

Un exemple de fichier txt : 1e03655b-0aac-48b2-82f3-75942084af7a.txt

et dossier : name.1e03655b-0aac-48b2-82f3-75942084af7a

Je dois donc trouver les dossiers qui correspondent aux fichiers txt et copier le dossier dans le répertoire des fichiers txt.

Merci

Était-ce utile?

La solution

Vous souhaitez développer les propriétés BaseName de ces fichiers texte (pour couper la partie .txt) et disposer d'un tableau de chaînes tel que :

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

Alors votre $source = La ligne doit extraire une liste de répertoires et pas seulement diriger une chaîne dans le pipeline, puis je suggérerais de faire correspondre les noms de répertoires avec une correspondance d'expression régulière et de vérifier si cette correspondance est -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}}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top