
Ich habe eine Liste mit 200 Dateinamen. Ich muss diese Dateien, die sich in verschiedenen Unterordnern befinden, anhand ihres Dateinamens finden und in einen separaten Ordner kopieren. Ich verwende Windows 7. Wie mache ich das?
Danke, Natalja
Antwort1
Ich empfehle, auf Ninite.com zu gehen und das Freeware-Tool „Everything“ herunterzuladen. Es handelt sich um ein einfaches Windows-Suchtool. Warten Sie nach der Installation etwa 5 Minuten, bis Ihre Dateien indexiert sind.
Geben Sie Ihren Suchbegriff in das Suchfeld ein und Sie erhalten sofort Ergebnisse, wie bei Google. Wenn Sie die Ergebnisse sehen, können Sie die Dateien direkt im Suchfenster „Alles“ bearbeiten, so wie Sie es im Windows Explorer tun können. Sie können „alles auswählen“ und dann kopieren und dann im Windows Explorer zu dem gewünschten Ordner gehen und sie einfügen.
Everything ist ein wirklich nettes Tool. Sie müssen nicht einmal den gesamten Dateinamen eingeben, sondern nur einen Teil davon. Beispielsweise gibt „eag mp3“ alle MP3s mit „eag“ im Dateinamen zurück, wie etwa „eagles - Songname.mp3“.
Antwort2
Bitte schön. Machen Sie zuerst den Probelauf. Lesen Sie die Kommentare sorgfältig durch.
Die Datei fullfilenames.txt bleibt erhalten, sodass Sie eine Aufzeichnung aller gefundenen Dateien haben. Wenn Sie diese Datei mehr als einmal ausführen müssen und die Datei behalten möchten, verschieben oder benennen Sie sie.
Es wird eine Protokolldatei „movelog.txt“ erstellt. Wie oben beschrieben, können Sie sie nach jedem Lauf entweder verschieben oder umbenennen, wenn Sie sie behalten möchten.
# Set your search directory and destination directory
$destdir = "[destination for files]"
$searchdir = "[top dir of search path]"
# Create empty file to contain the full path info for each file
echo $null > fullfilenames.txt
# Create array from your list of filenames
$filenames = Get-Content filenames.txt
# For each file in array of filenames get fullpath and assign var $fullname
foreach ($file in $filenames) {
$fullname = Get-ChildItem $searchdir | Where-Object {$_.PSIsContainer -eq $False -and ($_.Name) -eq $file} | ForEach-Object {$_.FullName}
# Add full path of file to fullfilenames.txt
echo $fullname >> fullfilenames.txt
# Uncomment next two lines for troubleshooting & dry run
#echo $file
#Write-Host $fullname
}
# Create array from new list of files with full path info and then move each file to destination.
# For troubleshooting & dry run, comment out following two lines.
$filenames = Get-Content fullfilenames.txt
echo $null > movelog.txt
foreach ( $file in $filenames ) {
Move-Item $file $destdir
# Log success/fail of each move
echo "$(Get-Date -f o) $? $file" >> movelog.txt
}
Hinweis: Dies ist ein Powershell-Skript. Speichern Sie es als whatever.ps1 und führen Sie es in der PowerShell-Konsole aus.
Genießen
Antwort3
Sie können in „Alles“ nach einer Liste von Dateien suchen, indem Sie mit trennen |
.
Zum Beispiel:file1|file2|file3|file4
Link zum Download von „Alles“:https://www.voidtools.com/downloads/