2013-11-26 24 views
6

Tworzę prosty skrypt, który wyprowadza bieżącego użytkownika zalogowanego, użycie procesora dla bieżącego systemu i dostępnej pamięci?Jak uzyskać bieżące użycie procesora i dostępnej pamięci w pliku wsadowym?

Udało mi się uzyskać bieżącego użytkownika/zalogowanych użytkowników, ale czy możliwe jest również użycie procesora i pamięci?

To jest mój kod do tej pory.

@echo off 

for /f "tokens=3 delims=\" %%i in ("%USERPROFILE%") do (set USER=%%i) 2>&1 
echo "Logged On User: %USER%" 
echo. 

pause 

Aby uzyskać użycie procesora, próbowałem tego polecenia, ale wydaje się, że nie działa.

for /f "skip=1" %p in ('wmic cpu get loadpercentage') do 
echo %p% 
+0

Co prowadzi do uwierzyć, że to nie działa? Czy pojawia się błąd? –

Odpowiedz

3

Zawsze możesz wykorzystać komendę systeminfo, ale wtedy będzie zmuszony przejść przez krótki ekranie ładowania

set totalMem= 
set availableMem= 
set usedMem= 
REM You need to make a loop 
for /f "tokens=4" %%a in ('systeminfo ^| findstr Physical') do if defined totalMem (set availableMem=%%a) else (set totalMem=%%a) 
set totalMem=%totalMem:,=% 
set availableMem=%availableMem:,=% 
set /a usedMem=totalMem-availableMem 
Echo Total Memory: %totalMem% 
Echo Used Memory: %usedMem% 

I że powinni robić dokładnie to, co chcesz. Ten kod można łatwo zmodyfikować, aby pokazać także pamięć wirtualną. (Zastosowanie set totalMem=%totalMem:,=% i set availableMem=%availableMem:,=% pozbywa przecinkami w zmiennych).

Mona

+0

dziękuje, działa, z tym wyjątkiem, że używana pamięć jest trochę niedokładna. na przykład, jeśli używana pamięć wynosi 1.8, wyświetla 2, a także, zdałem sobie sprawę, że całkowita pamięć jest wyświetlana jak "x, xxx". kiedy obliczanie używanej pamięci nie powodowałoby problemów z przecinkiem? – user2771150

+0

tak, ale ustalenie to jest łatwe – Monacraft

+0

Przepraszam, jestem nowy w partii, jak by to naprawić? – user2771150

6

Po pierwsze, gdy uruchomiony z pliku wsadowym dla zmiennej pętli potrzebuje dwa symbole procentowe - %%p

Po drugie, trzeba echo %%p, nie %p%:

for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do echo %%p 

Z linia poleceń:

for /f "skip=1" %p in ('wmic cpu get loadpercentage') do echo %p 
0
typeperf "\processor(_Total)\% Processor Time" -SC 1 -y 

lub

C:\>logman create counter CPU_Usage3 -c "\Processor(_Total)\% Processor Time" -f csv -o %temp%\cpu.csv 
The command completed successfully. 

C:\>logman start CPU_Usage3 
The command completed successfully. 

C:\>logman stop CPU_Usage3 
The command completed successfully. 

C:\>type %temp%\cpu*.csv 
The system cannot find the file specified. 

Polecenie typeperf nie jest dostępna dla WindowsXP domu, ale logman wymaga administratora przywilejów i tworzy plik tymczasowy. TYPEPERF. LOGMAN. Dla pamięci sprawdzić te liczniki: http://ss64.com/nt/syntax-performance-counters.html

0
@echo off 

setlocal enabledelayedexpansion 

set Times=0 

for /f "skip=1" %%p in ('wmic cpu get loadpercentage') do (

set Cpusage!Times!=%%p 

set /A Times=!Times! + 1 

) 

echo Percentage = %Cpusage0% 

pause 
+0

Kindly Dodaj trochę objaśnień .. – Rajesh