itebob
Goto Top

Ergebnis der fsize-Abfrage

Hallo,

ich durchsuche das Dateisystem nach Dateien bestimmter Größe
 C:\Users\UserName\AppData\Local\Google\Chrome Beta>forfiles /S /M * /C "cmd /c if @fsize GEQ 1048576 echo @path > LargeFilesList.txt"  
und das Ergebnis, die Datei LargeFilesList.txt ist in einem Ordner, wo sich die gefundene Dateien befinden, gespeichert. In meinem Fall ist es dieser Ordner
C:\Users\UserName\AppData\Local\Google\Chrome Beta\User Data\Default\Service Worker\CacheStorage\f2521ae53c6200af9e4347a9f2a9d17dd8c34cfb\a2f2801c-ccfb-482c-b364-f46861997a4e
Welche Erklärung gibt es dafür, dass die Datei in diesem und nicht in einem anderen Ordner erstellt wurde? Ich habe erwartet, dass das Ergebnis im Ordner
C:\Users\UserName\AppData\Local\Google\Chrome Beta
gespeichert wird. echo %path% liefert mir dieses Ergebnis:
C:\Users\UserName\AppData\Local\Google\Chrome Beta>echo %path%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\adminName\AppData\Local\Microsoft\WindowsApps

gruss, itebob
Windows 10 Pro, Version 22H2

Content-ID: 6955230711

Url: https://administrator.de/contentid/6955230711

Ausgedruckt am: 04.12.2024 um 08:12 Uhr

3063370895
3063370895 29.04.2023 aktualisiert um 10:43:27 Uhr
Goto Top
Hi,

die Datei wird im letzten durchsuchten Ordner abgelegt.
Wie wäre es mit PowerShell?

Nur die Dateinamen:
Get-ChildItem -Recurse | Where-Object Length -ge 1MB | Select-Object -ExpandProperty FullName | Out-File LargeFilesList.txt

Dateinamen und Größe:
Get-ChildItem -Recurse | Where-Object Length -ge 1MB | Format-Table FullName,length | Out-File LargeFilesList.txt

-Thomas
6247018886
Lösung 6247018886 29.04.2023 aktualisiert um 11:05:08 Uhr
Goto Top
Welche Erklärung gibt es dafür, dass die Datei in diesem und nicht in einem anderen Ordner erstellt wurde?
Die Erklärung ist einfach. Der Befehl im Parameter /C macht quasi für jede Datei eine CMD auf deren Arbeitsverzeichnis das der gefundenen Datei ist, ergo landet alles was darin ohne absolute Pfadangabe angegeben ist im Arbeitsverzeichnis, in dem Fall ist es das der gefundenen Dateien.

Das kannst du einfach umgehen indem du den Redirect einfach außerhalb des Befehls platzierst

forfiles /S /M * /C "cmd /c if @fsize GEQ 1048576 echo @path" >LargeFilesList.txt  

Mit Größenvergleichen in der CMD wäre ich aber sehr vorsichtig, denn das supported diese nur bis 2GB Größe (2147483647 Bytes).
https://stackoverflow.com/questions/9116365/windows-batch-file-if-failur ...

Also besser du nutzt wie @3063370895 oben geschrieben hat die PS wenn es um größere Vergleiche gehen sollte.

Cheers briggs
3063370895
Lösung 3063370895 29.04.2023 aktualisiert um 11:07:00 Uhr
Goto Top
Der Geschwindigkeitsvorteil ist auch nicht zu Vernachlässigen - PS ist etwa 300x schneller ;)

windowsterminal_js90hngqci

-Thomas
6247018886
6247018886 29.04.2023 aktualisiert um 11:20:30 Uhr
Goto Top
Wenn für jede gefundene Datei extra ein cmd Prozess aufgehen muss, verständlich face-smile. Wird endlich Zeit für den wohlverdienten Batch Ruhestand ... ist aber leider wie ein Pickel am Hintern der hier immer wieder mal kommt face-big-smile
itebob
itebob 29.04.2023 um 12:47:57 Uhr
Goto Top
Zitat von @3063370895:
Dateinamen und Größe:
Get-ChildItem -Recurse | Where-Object Length -ge 1MB | Format-Table FullName,length | Out-File LargeFilesList.txt

Dateinamen werden angezeigt. Aber ohne Dateigröße. Und Pfade länger als 112 Zeichen werden abgeschnitten.

-itebob
6247018886
Lösung 6247018886 29.04.2023 aktualisiert um 13:10:19 Uhr
Goto Top
Zitat von @itebob:
Dateinamen werden angezeigt. Aber ohne Dateigröße. Und Pfade länger als 112 Zeichen werden abgeschnitten.
Kein Thema als CSV ...
Get-ChildItem -Recurse -File | Where-Object Length -ge 1MB | select Fullname,Length | export-csv '.\LargeFilesList .csv' -Delimiter ";" -NoType -Encoding UTF8  
Oder wenn man bei Format-table bleiben will
Get-ChildItem -Recurse -File | Where-Object Length -ge 1MB | format-table Fullname,Length -AutoSize -Wrap | out-string | Out-File LargeFilesList.txt
usw.