Sortieren einer Dateiliste in Windows

470
GeoffMarbella

Haben Sie eine Liste von Farbfotos aus Hatton1.jpgzu Hatton72.jpgjedem Foto eine identische schwarze und weiße benannt Hatton1-2.jpgdurchHatton72-2.jpg

Gibt es eine Möglichkeit, die -2-Dateien in ein separates Verzeichnis zu extrahieren?

-1

3 Antworten auf die Frage

1
Keltari

Verwenden Sie den moveBefehl mit den entsprechenden Argumenten:

move * -2.jpg c: \ somefolder

1
AFH

Dies ist wegen der kurzen Dateinamen etwas knifflig: -

  • Um eine gewisse Kompatibilität mit alten Programmen zu gewährleisten, die nur kurze Dateinamen verarbeiten konnten, stellt Windows für jeden längeren Dateinamen einen alternativen 8.3-Namen bereit.
  • Die 8.3-Namen haben das Format *~N.???, wobei *der Anfang des Dateinamens ist und Neine ganze Zahl ist (wo es nur wenige Kollisionen gibt) - siehe dir /x.
  • Leider *~2.*werden bei der Suche einige dieser kurzen Namen sowie die gewünschten Dateien mit *~2.*dem langen Namen gefunden.

In cmdgehen, in das Verzeichnis mit den Dateien: Sie diejenigen, die Sie wollen auflisten bewegen mit:

dir /b | findstr "~2.jpg" 

Idealerweise sollten Sie Folgendes verwenden können:

for /f %f in ('dir /b | findstr "~2.jpg"') do move "%f" NewDirPath 

Leider können Sie keine Pipe in einem eingebetteten Befehl in einer forSchleife verwenden. Sie müssen also zwei Befehle verwenden (oder drei, um die temporäre Datei zu entfernen):

dir /b > Files.lst for /f %f in ('findstr "~2.jpg" Files.txt') do move "%f" NewDirPath del Files.lst 

Es ist keine sehr elegante Lösung, aber Sie tun es wahrscheinlich nur einmal. Wenn Sie dies wiederholt ausführen müssen, fügen Sie die Befehle in eine Batchdatei ein und stellen Sie sicher, dass Sie die %in der Schleifenvariable doppelte Anzahl ändern:

... for /f %%f in ('findstr "~2.jpg" Files.txt') do move "%%f" NewDirPath ... 
Und was ist los in Bewegung * -2.jpg? Warum wird stattdessen diese komplizierte Lösung benötigt? duDE vor 6 Jahren 0
@duDE - Ich dachte, ich hätte es klar gesagt: `move * -2.jpg` kann irrelevante Dateien mit passenden Kurznamen verschieben. AFH vor 6 Jahren 0
Sorry, AFH, ich sehe es jetzt :) +1 duDE vor 6 Jahren 0
0
Seth

Verwenden Sie PowerShell, die Sie Get-ChildItemzusammen mit verwenden können Move-item.

Es würde ungefähr so ​​aussehen:

Get-ChildItem -Filter '*-2.jpg' -Recurse | % 

Ich habe diesen Code nicht getestet, aber er sollte sehr ähnlich sein. Die Verwendung der normalen Windows-Suche und das Ziehen der Dateien würde wahrscheinlich ebenfalls funktionieren.