So finden Sie Dateien ohne Erweiterung mit Windows

1647
computationalprince

Ich habe einige Dateien auf meiner Festplatte, die keinerlei Erweiterungen haben. Es ist sehr schwer, sie manuell zu finden. Ich mag es wirklich nicht, dass ich meine Maus früher austauschen müsste, weil die Hardware nicht riesig ist, aber dennoch einen sehr prominenten Schaden anrichtet, weil versucht wird, diese Dateien ständig zu finden Klicken und Scrollen, da es sich um ein paar hundert Dateien in einem einzigen Ordner handelt.

Kennt jemand hier einen cmdoder PowerShellBefehl oder eine erweiterte Abfragesyntax für die Windows Explorer-Suche, um diese Aufgabe zu vereinfachen?

0
Was ist die Frage? Toto vor 6 Jahren 0
scherzen Sie mit diesem Lorem-Ipsum-Text? SimonS vor 6 Jahren 0
Explorer: `kind: = -folder extension: =" "`. PetSerAl vor 6 Jahren 1
@PetSerAl scheint leider nicht zu funktionieren (versuchte auch, es zu verändern, es herumzuwechseln, aber nichts). computationalprince vor 6 Jahren 0
@computationalprince Es scheint nur an indizierten Standorten zu funktionieren. Dies sollte auch an nicht indizierten Stellen funktionieren: `kind: = -folder type: = - [] extension: = []`. PetSerAl vor 6 Jahren 1
Um noch einen Schritt weiter zu gehen (nur ein bisschen), können Sie `kind: = -folder type: = - [] extension: = [] ordner:" C: \ ordner \ pfad "` verwenden; C: \ folder \ path "` in die Mischung mit der erweiterten Abfragesyntax von ** File Explorer **, um nicht rekursiv zu suchen und nur nach dem in doppelten Anführungszeichen eingeschlossenen Ordner zu suchen. Sehr schönes @ PetSerAl !!! Pimp Juice IT vor 6 Jahren 0
@PetSerAl Sehen Sie sich meine aktualisierte Antwort mit diesem hilfreichen Tipp an, von dem Sie meinen, dass er zu gut ist, um nur einen Kommentar abzugeben. Pimp Juice IT vor 6 Jahren 0
Ich bin mir nicht sicher, warum dies abgelehnt wurde, scheint mir eine perfekte Frage zu sein. +1 FreeSoftwareServers vor 6 Jahren 0
@FreeSoftwareServers Es wurde wahrscheinlich während der ersten ... Überarbeitung / Bearbeitung des Krieges heruntergestuft. Die Frage war nicht immer so lesbar. Michael Frank vor 6 Jahren 0
Gut genug, aber die Leute sollten ihre Downvotes rückgängig machen, wenn eine Frage behoben / bearbeitet wird. Ich würde gerne wissen, wie er mit einer Reihe von Dateien ohne Erweiterungen endete ... Aber das ist wirklich irrelevant FreeSoftwareServers vor 6 Jahren 0
@ PetSerAl: Ich finde, dass `kind: -Ordnererweiterung: []` und `Typ: -Ordnererweiterung: []` gut genug sind (unter Windows 7). Warum setzen Sie "=" und Leerzeichen zwischen den Namen der Eigenschaft (Schlüsselwort) und die Einschränkung (Wert)? Scott vor 6 Jahren 0
@Scott Space ist die Angelegenheit des Stils, denke ich, es sieht auf diese Weise besser aus. `=` ist in diesem Fall wahrscheinlich nicht notwendig, aber ich möchte gerne explizit sein: Einige Eigenschaften verwenden standardmäßig teilweise Übereinstimmung, und dies ist auch die Art der automatischen Vervollständigung. Und ohne `type: = - []` werden je nach Suchort keine Dateisystemelemente wie Internetprotokollelemente gefunden. PetSerAl vor 6 Jahren 0

4 Antworten auf die Frage

5
Pimp Juice IT

Suchen von Dateien ohne Dateierweiterung mit Windows

Windows Explorer - Erweiterte Abfragesyntax

Wie pro PetSerAl hier sind einige der Datei - Explorer Advanced Query Syntax - Methode mit zu beginnen, aber weiter unten für die entsprechenden liest Befehlszeile und Batch - Skript Methoden für diese Aufgabe.

Rekursive Suche

kind:= -folder type:= -[] extension:= [] 

Nicht rekursiv

Wählen Sie einfach die Option " Aktueller Ordner " über die Registerkarte " Suchen " der GUI aus

oder

kind:= -folder type:= -[] extension:= [] folder:"C:\folder\path" 

Sie können eine Verwendung für / f - Schleife der Ausgabe eines Iterieren dir - Befehls mit dem /Bund /A-DParametern, und dann etwas bedingter verwenden, wenn Logik nur Ausgabedateien ohne Erweiterungen Substitutionen für die iterativen Dateien im angegebenen Verzeichnis.

Befehlszeile

Hinweis: Dies setzt voraus, dass das Verzeichnis in der Befehlszeile das Verzeichnis ist, in dem Sie suchen müssen, um die Dateien ohne Erweiterungen anzuzeigen.

FOR /F "TOKENS=*" %A IN ('dir /B * /A-D') DO IF /I [%~nxA]==[%~nA] ECHO %~A 

Batch-Skript

Hinweis: Dies ist ein Stapelskript, bei dem Sie den SET Src=Wert als das Verzeichnis festlegen, nach dem Sie suchen müssen, um Dateien ohne Erweiterungen anzuzeigen.

@ECHO ON SET Src=C:\folder\path FOR /F "TOKENS=*" %%A IN ('DIR /B "%Src%\*" /A-D') DO IF /I [%%~nxA]==[%%~nA] ECHO %%~A PAUSE EXIT 

Weitere Ressourcen

  • Für / F
  • FOR /?

    Darüber hinaus wurde die Ersetzung von FOR-Variablenreferenzen verbessert. Sie können jetzt die folgende optionale Syntax verwenden:

    %~nI - expands %I to a file name only %~xI - expands %I to a file extension only 
  • Dir

  • Ob
Aus Sicht der CMD hat jeder Dateiname, der einen Punkt enthält, eine Erweiterung, auch wenn es keine ist. Es kann sich also lohnen, die Erweiterung nach Länge oder Inhalt auf Gültigkeit zu prüfen. (assoc listet bekannte Erweiterungen auf) LotPings vor 6 Jahren 0
Es ist ziemlich einfach, zwischen rekursiver / nicht-rekursiver Suche über [GUI] (https://i.stack.imgur.com/S57D1.png) umzuschalten. PetSerAl vor 6 Jahren 1
(1) In der Frage ist keine Windows-Version angegeben. Windows 7 und frühere Versionen verfügen nicht über den Datei-Explorer. Windows Explorer (wie vom OP explizit zitiert) hat keine Multifunktionsleiste oder ähnliches wie die Registerkarte "Suchen", die Sie anzeigen. (2) Zu Ihrer Information, ich kann bestätigen, dass der `kind: = -Ordner-Typ: = - [] -Erweiterung: = []` Erweiterte Abfragesyntax unter Windows 7 funktioniert. Aber auch `kind: -Ordner-Typ: - [] -Erweiterung : [] `- Sie brauchen nicht die Zeichen '=' (oder die Leerzeichen danach). In der Tat, `kind: -Ordnererweiterung: []` und `Typ: -Ordnererweiterung: []` scheinen gut genug zu sein. … (Fortsetzung) Scott vor 6 Jahren 1
(Fortsetzung)… (3) Wann erzeugt `` dir / B * / AD``` ein anderes Ergebnis als `dir / B / AD` (dh wann erzeugt` dir * 'ein anderes Ergebnis als ` dir`)? Scott vor 6 Jahren 1
1
Bacon Bits

Für die PowerShell-Lösung:

Get-ChildItem -Path $Path -Recurse -File -Filter '*.' 

Oder:

Get-ChildItem -Path $Path -Recurse -File | Where-Object Extension -eq '' 

Beachten Sie, dass der -FileParameter PowerShell v3 + erfordert.

1
Justin
ls | ? {$_.Extension -eq ''} 

Dies verwendet maximale Abkürzung. Aber es ist wirklich derselbe Code wie bei @BaconBits. Ich bevorzuge die Abkürzung. Es ist schwerer zu lesen für Anfänger, aber ausdrucksstarker und prägnanter

Der Grund, warum wir eine minimale Antwortlänge haben, ist, dass wir erwarten, dass jeder Beitrag ein gewisses Maß an Erklärung und / oder Kommentar hat. Scott vor 6 Jahren 2
Es tut uns leid. behoben. Vielen Dank Justin vor 6 Jahren 0
0
Scott

In der Eingabeaufforderung verwenden Sie einfach *.:

C: \ Verzeichnis \ Name > Verzeichnis  24.08.2014 03:33 Uhr. 24.08.2014 03:33 Uhr .. 24.08.2014 03:33 Uhr 16 a 24.08.2014 03:33 Uhr 18 v.Chr 24.08.2014 03:33 Uhr 20 def 3 Datei (en) 54 Bytes  C: \ Verzeichnis \ Name > Verzeichnis *.  24.08.2014 03:33 Uhr. 24.08.2014 03:33 Uhr .. 24.08.2014 03:33 Uhr 16 a 1 Datei (en) 16 Bytes  C: \ Verzeichnis \ Name >

Denken Sie daran, dass die Windows-Eingabeaufforderung nicht Unix ist. Bei Unix-Dateinamen ist dot ( .) nur ein gewöhnliches Zeichen (mit Ausnahme der Tatsache, dass Dateinamen, die mit dot beginnen, verborgen sind). Bezeichnet in Unix *e*alle Dateinamen, die ein enthalten e, und *.*alle Dateinamen, die (explizit) ein enthalten ..

Die Regeln für die Eingabeaufforderung sind komplizierter.  *bedeutet alle Dateinamen (auch solche mit einer Erweiterung). Und *.*bedeutet auch alle Dateinamen (auch solche, die kein a enthalten .). Aber *.bedeutet alle Dateinamen, die keine Erweiterung haben.