2013-11-26 31 views
6

Sto creando un semplice script che restituisce l'utente corrente che ha effettuato l'accesso, l'utilizzo della CPU per il sistema corrente e la memoria disponibile?Come ottenere l'attuale utilizzo della CPU e la memoria disponibile nel file batch?

Sono riuscito a ottenere l'accesso dell'utente corrente, ma è possibile ottenere l'utilizzo della CPU e anche la memoria?

Questo è il mio codice finora.

@echo off 

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

pause 

Per ottenere l'utilizzo della CPU, ho provato questo comando ma non sembra funzionare.

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

Cosa sta portando a credere che non sta funzionando? stai ricevendo un errore? –

risposta

3

Si può sempre utilizzare il comando systeminfo, ma poi sarebbe stato costretto a passare attraverso una breve schermata di caricamento

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% 

E che dovrebbe fare esattamente quello che vuoi. Questo codice può essere facilmente modificato per mostrare anche la memoria virtuale. (L'uso di set totalMem=%totalMem:,=% e set availableMem=%availableMem:,=% si libera di virgole nelle variabili.)

Mona

+0

grazie, funziona, tranne, la memoria utilizzata è un po 'imprecisa. per esempio, se la memoria utilizzata è 1.8, visualizza 2 e inoltre, ho realizzato che la memoria totale è visualizzata come "x, xxx". quando si calcola la memoria utilizzata, la virgola non causerebbe problemi? – user2771150

+0

sì, ma risolvere che è facile – Monacraft

+0

mi dispiace, io sono nuovo al gruppo, come lo ripareresti? – user2771150

6

In primo luogo, quando si esegue da un file batch, il per la variabile del ciclo ha bisogno di due simboli di percentuale - %%p

In secondo luogo, è necessario eco %%p, non %p%:

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

Dalla riga di comando:

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

o

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. 

Typeperf non è disponibile per Windows XP Home, ma logman richiede privilegi di amministratore e crea un file temporaneo. TYPEPERF. LOGMAN. Per la memoria controllare questi contatori: 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

Gentilmente Aggiungi alcuni contenuti di Spiegazione .. – Rajesh