انسخ الأدلة عندما يتطابق اسمها مع ملفات txt
-
26-12-2019 - |
سؤال
أحاول نسخ مجموعة من الدلائل.لدي ملفات نصية لها اسم مشابه وأحتاج إلى مطابقة الدلائل مع تلك الملفات النصية لتحديد الدلائل التي سيتم نسخها.
هذا ما فعلته ولا أستطيع معرفة كيفية إصلاحه.أنا أدور في دوائر.
$destination = "..\..\$args\Images\"
$txtfiles = Get-ChildItem $destination -Include *.txt
$source = "..\..\..\Images\" | ?{ $_.PSIsContainer } | Where-Object { $_.Name -Like "*$txtfiles*" } | Copy-Item $destination
مثال لملف txt: 1e03655b-0aac-48b2-82f3-75942084af7a.txt
والمجلد: name.1e03655b-0aac-48b2-82f3-75942084af7a
لذلك أحتاج إلى العثور على المجلدات التي تطابق ملفات txt ونسخ المجلد إلى دليل ملف txt.
شكرًا
المحلول
تريد توسيع خصائص BaseName لتلك الملفات النصية (لقطع جزء .txt) والحصول على مجموعة من السلاسل مثل:
1e03655b-0aac-48b2-82f3-75942084af7a
1e03655b-0aac-48b2-82f3-75942084af7b
1e03655b-0aac-48b2-82f3-75942084af8g
1e03655b-0aac-48b2-82f3-75942084afba
ثم الخاص بك $source =
يحتاج السطر إلى سحب قائمة الدليل وليس فقط توجيه سلسلة أسفل المسار، وبعد ذلك أقترح مطابقة أسماء الدليل مع تطابق regex، والتحقق لمعرفة ما إذا كانت هذه المطابقة صحيحة -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}}
لا تنتمي إلى StackOverflow