
Ich verwende Windows 10.
Ich möchte viele Dateien von einem Ordner in einen anderen kopieren und brauche wahrscheinlich ein Skript oder eine andere Lösung, die dies ermöglicht.
Ich habe 2 Ordner: Der Ordner A
enthält Dateien mit den Namen:
00010_name0_1680x1050.jpg
00020_name11_1680x1050.jpg
00021_name222_1680x1050.jpg
00022_name300_1680x1050.jpg
während der Zielordner B
Dateien mit folgenden Namen enthält:
00010_name0_1920x1200.jpg
00020_name11_1920x1200.jpg
00021_name222_1920x1200.jpg
00030_name500_1920x1200.jpg
Die Dateinamen sind also gleich, unterscheiden sich jedoch im letzten Teil, nämlich hinsichtlich der Auflösung.
Ich möchte alle Dateien von A
nach kopieren B
, aber nur diejenigen, deren erster Namensteil unterschiedlich ist, bis zum letzten, _
der die Auflösung trennt.
Vielleicht brauche ich also ein Regex-Skript, das Namen vergleichen und entscheiden kann, ob sie kopiert werden sollen oder nicht. Jede Art einfacher Lösung wird geschätzt.
Antwort1
Sie können diese Art von PowerShell-Skript verwenden:
# Save directory paths to vars
$dirA = C:\Some\Folder\A
$dirB = C:\Some\Folder\B
# Get file names of each found .jpg (with 1920x1200 in name)
$fileNamesB = (Get-ChildItem -Path $dirB -Filter *_1920x1200.jpg).Name
# Get prefixes of names that shouldn't be copied, by removing the resolution postfix
# % is shorthand for ForEach-Object
$prefixesB = $fileNamesB | % { $_ -replace "_1920x1200\.jpg$", '' }
$filesA = Get-ChildItem -Path $dirA -Filter *_1680x1050.jpg
# Filter files by checking their name property against our prefixes
# ? is shorthand for Where-Object
$filteredFilesA = $filesA | ? { ($_.Name -replace "_1680x1050\.jpg$", '') -NotIn $prefixesB }
# Copy the filtered files to folder B
$filteredFilesA | Copy-Item -Destination $dirB
Erläuterungen zu den Funktionen finden Sie in den Kommentaren.