Frage

Ich versuche, eine Reihe von Verzeichnissen zu kopieren.Ich habe Textdateien mit einem ähnlichen Namen und muss die Verzeichnisse diesen Textdateien zuordnen, um zu bestimmen, welche Verzeichnisse kopiert werden sollen.

Das habe ich getan und ich weiß nicht, wie ich das Problem beheben kann.Ich drehe mich im Kreis.

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

Ein Beispiel für eine TXT-Datei: 1e03655b-0aac-48b2-82f3-75942084af7a.txt

und Ordner: name.1e03655b-0aac-48b2-82f3-75942084af7a

Ich muss also die Ordner finden, die den TXT-Dateien entsprechen, und den Ordner in das TXT-Dateiverzeichnis kopieren.

Danke

War es hilfreich?

Lösung

Sie möchten die BaseName-Eigenschaften dieser Textdateien erweitern (um den TXT-Teil abzuschneiden) und über ein Array von Zeichenfolgen verfügen, z. B.:

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

Dann Ihr $source = Zeile muss eine Verzeichnisliste abrufen und nicht nur eine Zeichenfolge durch die Pipeline weiterleiten. Dann würde ich vorschlagen, die Verzeichnisnamen mit einer Regex-Übereinstimmung abzugleichen und zu prüfen, ob diese Übereinstimmung vorhanden ist -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}}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top