2013-11-26 21 views
6

Tôi đang tạo một tập lệnh đơn giản cho phép người dùng hiện tại đăng nhập, sử dụng CPU cho hệ thống hiện tại và bộ nhớ khả dụng?Làm thế nào để sử dụng CPU hiện tại và bộ nhớ có sẵn trong tập tin thực thi?

Tôi đã quản lý để có được người dùng hiện tại/s đăng nhập nhưng có thể nhận được sử dụng CPU và bộ nhớ không?

Đây là mã của tôi cho đến thời điểm này.

@echo off 

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

pause 

Để sử dụng CPU, tôi đã thử lệnh này nhưng có vẻ như nó không hoạt động.

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

gì đang dẫn bạn để tin rằng nó không làm việc? bạn đang nhận được một lỗi? –

Trả lời

3

Bạn luôn có thể sử dụng các lệnh systeminfo, nhưng sau đó sẽ buộc phải trải qua một màn hình loading ngắn

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% 

Và đó nên thực hiện chính xác những gì bạn muốn. Mã này có thể dễ dàng được sửa đổi để hiển thị Bộ nhớ ảo. (Việc sử dụng set totalMem=%totalMem:,=%set availableMem=%availableMem:,=% được thoát khỏi dấu phẩy trong các biến.)

Mona

+0

cảm ơn, nó hoạt động, ngoại trừ, bộ nhớ được sử dụng là một chút không chính xác. ví dụ, nếu bộ nhớ được sử dụng là 1,8, nó hiển thị 2 và cũng có thể, tôi nhận ra rằng tổng bộ nhớ được hiển thị như "x, xxx". khi tính toán bộ nhớ được sử dụng, dấu phẩy sẽ không gây ra vấn đề gì? – user2771150

+0

yea, nhưng sửa chữa dễ dàng – Monacraft

+0

xin lỗi, tôi mới làm quen với hàng loạt, bạn sẽ sửa chữa nó như thế nào? – user2771150

6

Thứ nhất, khi chạy từ một tập tin thực thi, cho biến vòng lặp cần hai ký hiệu tỷ lệ phần trăm - %%p

Thứ hai, bạn cần để echo %%p, không %p%:

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

Từ dòng lệnh:

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

hoặc

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 không có sẵn cho WindowsXP nhà, nhưng logman đòi hỏi đặc quyền quản trị và tạo tệp tạm thời. TYPEPERF. LOGMAN. Đối với bộ nhớ kiểm tra các quầy: 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

Vui lòng Thêm một số nội dung Giải thích. – Rajesh

Các vấn đề liên quan