cmd Datein bestimmter größe ermitteln

senoyches

Lt. Junior Grade
Registriert
Dez. 2018
Beiträge
338
Hall zusammen,

ich bin auf der suche nach einem CMD Befehl mit dem ich aus einem Ordner jede Datei ermitteln kann die kleiner ist als z.B. 16MB über dir habe ich keine Lösung gefunden, dort kann ich es nur sortieren, denn andernfalls hätte ich mittels dir an find weiterleiten können. Oder ist hier cmd überfordert und Powershell wäre die bessere alternative?

freue mich über kreative Ideen.

Gruß
Senoyches
 
PS ist immer die bessere Alternative :)
PowerShell:
Get-ChildItem -Path <path> -Recurse | ? { $_.Length -lt 16MB }
 
  • Gefällt mir
Reaktionen: senoyches und Micha45
Wäre Powershell eine Option? Ist in Windows 10 enthalten, da kann man einfach folgendes schreiben:

gci | where {$.length -lt 500 -and $.length -gt 1}

Das zeigt Dateien an die kleiner 500 Bytes sind, das größer als 1 entfernt Verzeichnisse die keine Größe haben.
 
  • Gefällt mir
Reaktionen: senoyches
Madman1209 schrieb:

für einen einfachen CMD Befehl an den ich eigentlich dachte sieht mir das etwas zu komplex aus, dachte eigentlich an so etwas simples wie

Befehlt xy /parmater z >16000 /jeweiligen Pfad anzeigen glaube bei dir ist das /s oder so ähnlich

hatte mir dazu dir, attrib, tree usw. näher angeschaut, aber keine kombinierbare Lösung gefunden.
 
@d2boxSteve
Nicht nötig, zumindest dafür nicht. GCI (als alias) versteht ebenso wie Get-ChildItem die Flags -File und -Directory.

Aber man kann natürlich mit -Length -gt 0 dafür sorgen, daß leere Dateien nicht berücksichtigt werden.
 
Das war der Sinn, Verzeichnisse interessieren hier ja nicht. Das recursive hab ich vergessen ...
 
  • Gefällt mir
Reaktionen: RalphS
Vielen Dank an die Antworten, auf Basis dieses Befehls habe ich mittels der powershell Dokumentationen mir einige andere Befehle erarbeitet, stehe jetzt aber wieder vor einem neuen Problem, sicherlich ist es nur ein kleiner Denkfehler

PowerShell:
gci Q:\Movies\ -r *.mp4 |
 ? { $_.Length -lt 100MB} |
 %{mv $_.FullName -passthru -Destination Q:\Videos\zum prüfen\}

Ziel dieses Codes ist es, dass ich den Pfad der einzelnen Datein auf die das Kriterium mp4 zutrifft mittels der Pipeline an Move-Item übergeben werden und dann unter gleichem Namen in den genannten Ordner zum Prüfen verschoben werden.
Allerdings wird mir in dem betreffenden Ordner einfach eine Datei Namens "zum prüfen" erzeugt.

Nice to know: Sinn der ganzen Sache ist es ich will kleine Videoschnippsel die sich über die Jahre angesammelt haben anschauen ob das was wichtiges ist oder nicht und Videos kleiner 100MB sind meist nix dolles, anschließen werde ich andere Parameter prüfen, wie Auflösung <= 360p oder sowas
 
Zuletzt bearbeitet:
Bau eine Prüfung ein, ob der Pfad existiert, und leg ihn an, wenn nicht. Dann sollte es gehen.

ps, Du kannst für die Lesbarkeit in ps unmittelbar nach dem Pipesymbol die Zeile umbrechen.
 
PowerShell:
If(!(Test-Path "Q:\Videos\zum prüfen")){New-Item "Q:\Videos\zum prüfen" -Type Directory}
 
RalphS schrieb:
Bau eine Prüfung ein, ob der Pfad existiert, und leg ihn an, wenn nicht. Dann sollte es gehen.

aber kann das nicht mv eigentlich selbstständig, zumindest habe ich es in dem passenden Artikel so gelesen, das sowohl move als auch copy wenn ein Verzeichnis wohin etwas verschoben / kopiert werden sollen nicht existieren, werden sie angelegt.

RalphS schrieb:
ps, Du kannst für die Lesbarkeit in ps unmittelbar nach dem Pipesymbol die Zeile umbrechen.

Ich hab es hier mal geändert
 
Move hat dir keinen Unterordner, sondern eine Datei ohne Dateiformat angelegt. Also funktioniert das so nicht.
Mit copy funktioniert das genauso nicht.

Setze doch einfach den Befehl mit der Abfrage über den mit gci. Das funktioniert nämlich.
 
Micha45 schrieb:
Move hat dir keinen Unterordner, sondern eine Datei ohne Dateiformat angelegt. Also funktioniert das so nicht.
Mit copy funktioniert das genauso nicht.

Setze doch einfach den Befehl mit der Abfrage über den mit gci. Das funktioniert nämlich.

Da war ich wohl von den Linux Pedants verwöhnt, da wurde meines Wissens immer der passende Ordner direkt mit angelegt.

Du meinst also ganz simpel quasi so?

PowerShell:
If(!(Test-Path "Q:\Videos\zum prüfen")){New-Item "Q:\Videos\zum prüfen" -Type Directory}
gci Q:\Movies\ -r *.mp4 |
? { $_.Length -lt 100MB} |
%{mv $_.FullName -passthru -Destination Q:\Videos\zum prüfen\}

jetzt gesellt sich plötzlich ein neues Problem dazu, auf einmal gibt mir die Powershell zurück, dass das Laufwerk Q nicht existiert obwohl ich bereits darauf zugreife über den Explorer, die Powershell listet mir mit dem Befehl
get-psdrive -psprovider filesystem auch nur meine lokalen Laufwerke auf nicht jedoch meine Netzlaufwerke, obwohl diese wie gesagt korrekt verbunden sind jemand eine Idee, denn ohne das kann ich meinen Befehl nicht mal testen.

Jemand eine Idee, wo ich ansetzen könnte, den Missstand zu beseitigen?
Ergänzung ()

senoyches schrieb:
Jetzt gesellt sich plötzlich ein neues Problem dazu....

okay jetzt wird es Kurios, die Powershell ohne Adminrechte kann dies, die mit Adminrechten hingegen nicht, jetzt bin ich überfragt ...., aber die eigentlich Frage ist damit erledigt.
 
Zuletzt bearbeitet:
Zurück
Oben