Windows + wmic + Speicher
Ich würde gerne die Summe verwendet Speicher, der alle Programme mit dem Namen "test.exe" in einem batch-Skript. Ich kann den folgenden Befehl verwenden, um memory-Nutzung aller geeigneten Prozesse:
C:\> wmic process where name="test.exe" get workingsetsize | findstr /v "WorkingSetSize"
55758848
66174976
So, ich denke, ich möchte die Summe all dieser Werte zusammen mit einer FOR-Schleife. Der folgende Befehl würde nur anzeigen, die ich variabel, aber dennoch bekomme ich den angehängten Fehler.
C:\> for /F %i IN ('wmic process where name="test.exe" get workingsetsize ^| findstr /v "WorkingSetSize"') DO echo %i
test.exe - Invalid alias verb.
Wie kann ich das ändern, dass der Befehl um die Summe aller verwendeten Speicher-zusammen-und-Ausgang, und es müssen arbeiten in der CMD, vorzugsweise sehr ähnlich zu meinem Befehl.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre FOR-Anweisung wird scheitern, weil die
=
ist ein token-Trennzeichen, und es ist immer abgestreift durch die batch-parser. Es wird funktionieren, wenn Sie Flucht als^=
.WMIC hat eine unglückliche "feature", wenn Ihr Ausgang geleitet, es enthält eine zusätzliche Wagenrücklaufzeichen (0x0D) am Ende jeder Zeile der Ausgabe, plus eine zusätzliche Zeile am Ende der Ausgabe. Dies kann zu Problemen mit zusätzlichen unerwünschten Zeilen in der FOR-Schleife. Ihre situation ist leicht gelöst, indem die FINDSTR zum suchen mindestens einer Ziffer anstelle der Abwesenheit der Kopfzeile.
Bekommen die Summe, die Sie benutzen Sie einfach SET /A in der Schleife (nach dem ersten initialisieren der variable SUMME).
Jedoch - Mathematik in der Windows-CMD ist beschränkt auf 32-bit signed integer-Unterstützung. Die Summe könnte leicht mehr als die maximal zulässige Wert von 2.147.483.647. Sie wäre besser, verwenden von PowerShell oder sonst CSCRIPT ausführen von VBS-oder JScript-Programm. Alle diese alternativen unterstützen, um lange ganze zahlen (64-bit).