Batch-Datei zum Überprüfen und Vergleichen der Größe einer .log-Datei in einem Ordner [geschlossen]

-3

Ich muss die Dateien aus einem Ordner finden, dessen Größe 10 MB überschreitet.

Bitte führen Sie, wie ich diese Aufgabe ausführen kann.

Sam
quelle
1
Willkommen bei Super User! Bitte beachten Sie, dass Super User kein Skriptschreibdienst ist. Wenn Sie uns mitteilen, was Sie bisher versucht haben (einschließlich aller Skripte, die Sie verwenden) und wo Sie hängen geblieben sind, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen Wie stelle ich eine gute Frage? .
DavidPostill

Antworten:

1

Hier ist eine einfache PowerShell-Lösung (als Alternative zum Batch)

gci 'C:\yourpath\yourfolder' | % { get-item $_.FullName | ? { $_.length -gt 10mb } }

was wir hier machen ist:

  • Holen Sie sich alle Dateien in Ihrem Ordner mit gci
  • Durchlaufen Sie alle Dateien per foreach-objectAlias%
  • Überprüfen der Länge der Items-Datei über get-item
  • Wählen Sie nur die Dateien aus, die durch eine where-objectAlias- ?Abfrage größer als 10 MB sind .

Bearbeiten: Um diesen Befehl in einer Batch-Datei anstelle von PowerShell selbst zu verwenden, können Sie Folgendes schreiben:

powershell -command "gci 'C:\yourpath\yourfolder' | % { get-item $_.FullName | ? { $_.length -gt 10mb } }"
SimonS
quelle
Hallo Experten, ich bin neu in diesem Skript, kann also möglicherweise nicht genau fragen oder erklären. Schätzen Sie mich und für die oben genannten Beiträge. Was ich tat, ist, dass ich die Akten (Protokolle) finden muss, die mehr als 10 MB in einem Faltblatt sind und die Post mit dem Namen der Akten senden. Kniffliger Teil: Mail sollte gesendet werden, wenn dort eine neue Datei in den Ordner kommt, also muss ich immer den Überblick behalten und zwischen der alten Datei und der neuen Datei unterscheiden. Problem: Ich habe folgenden Code geschrieben und kann die Logik für Mail nicht erstellen. Wie kann ich feststellen, wann eine neue Datei eingeht und die E-Mail auslösen?
Sam
@echo off set mail_to_list = ****@gmail.com powershell echo $ vari1 = "& gci 'C: \ Benutzer \ z003mcsd \ Desktop \ Leistung' |% {get-item $ _. FullName |? {$ _. Länge -gt 10mb}}} Powershell {Send-MailMessage -To "% mail_to_list%" -From 'v**@****.com' -Subject 'Log File more than 100 MB' -Body 'Check log file to Status kennen ..... '-SmtpServer' Mail. *****. de '} "
Sam
@ Sam Ich denke, es wäre gut, eine neue Frage zu diesem Thema zu stellen, da diese Frage hier keine "gute Frage" ist und es sich nicht um Ihr E-Mail-Problem handelt
SimonS
Ich habe eine neue Frage aufgeworfen. Ich habe Skript in Powershell geschrieben und freue mich. angemessen deinen Beitrag.
Sam
1

Listen Sie alle Dateien mit mehr als 10 MB in einem bestimmten Verzeichnis und seinen Unterverzeichnissen auf.

@echo off

setlocal enabledelayedexpansion

set "SEARCH_DIR=%~1"

echo Usage: %~nx0 directory
echo Lists all files in given directory and its subdirectories larger than 10MB.

if not exist "%SEARCH_DIR%" (
    echo "%SEARCH_DIR%" does not exist.
    exit /b 1
)

for /R "%SEARCH_DIR%" %%F in (*) do (
    if exist "%%F" if %%~zF GTR 10000000 echo %%F
)

Beispiel: Führen Sie das obige Batch-Skript (in diesem Beispiel script.bat) aus, um alle Dateien aufzulisten, die größer als 10 MB in Laufwerk D sind.

C:\>script.bat D:

Quelle: Stapelskript zum Auffinden von Dateien mit mehr als 10 MB in Laufwerk D in Windows XP

karel
quelle
Ich frage mich, was es mit 10 MB auf sich hat ... wie ein Austin Power oder ein Red Drawf Witz ... Wie wenn man einen Anwalt fragt, was passiert, wenn ein Blinder seinen Nachbarhund in einem Garten aus Rosenbüschen spaziert und er genau dieses Thema auf Seite 644 findet eines Buches.
Barlop