Ben WMIC
ve TASKLIST
araçları seviyorum ama pencerelerin ev / temel sürümlerinde mevcut değildir.Başka bir yol QPROCESS
hemen hemen her windows makinede mevcut komutu kullanmaktır (terminal hizmetleri olanlar için - Ben sadece SP2 olmadan XP kazanmak düşünüyorum, bu yüzden her windows machine) ile ilişkili olan kısmını dışarı aktarmak suretiyle yedek oluşturmanız gerekir:
@echo off
:check_process
setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
set process_to_check=%~1
:: QPROCESS can display only the first 12 symbols of the running process
:: If other tool is used the line bellow could be deleted
set process_to_check=%process_to_check:~0,12%
QPROCESS * | find /i "%process_to_check%" >nul 2>&1 && (
echo process %process_to_check% is running
) || (
echo process %process_to_check% is not running
)
endlocal
QPROCESS
komut, TASKLIST
işlem adının yalnızca 12 sembolünü gösterecek kadar güçlü değildir ve sınırlıdır, ancak TASKLIST
mevcut değilse dikkate alınmalıdır .
İşlem bir bağımsız değişken olarak adı kullanıyorsa daha basit kullanım ( .exe
bu durumda, yürütülebilir adı ilettiğinizde sonek zorunludur):
@echo off
:check_process
setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
:: .exe suffix is mandatory
set "process_to_check=%~1"
QPROCESS "%process_to_check%" >nul 2>&1 && (
echo process %process_to_check% is running
) || (
echo process %process_to_check% is not running
)
endlocal
İki QPROCESS
kullanım yolu arasındaki fark , QPROCESS *
tüm işlemleri listelerken QPROCESS some.exe
yalnızca geçerli kullanıcının işlemlerini filtreleyecektir.
Kullanma WMI
yerine windows script host exe sayesinde nesneleri WMIC
.Here yarasa dosyası bir option.It her pencereler makinede de çalışmalıdır olan (WSH kapalıdır olanları hariç fakat bu nadir bir durumdur) o WMI aracılığıyla listeleri tüm süreçler sınıflar ve QPROCESS
yukarıdaki komut dosyası yerine kullanılabilir (bir jscript / bat melezidir ve şu şekilde kaydedilmelidir .bat
):
@if (@X)==(@Y) @end /* JSCRIPT COMMENT **
@echo off
cscript //E:JScript //nologo "%~f0"
exit /b
************** end of JSCRIPT COMMENT **/
var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
var processes = new Enumerator(colProcess);
for (;!processes.atEnd();processes.moveNext()) {
var process=processes.item();
WScript.Echo( process.processID + " " + process.Name );
}
Ve bir işlemin çalışıp çalışmadığını kontrol edecek bir değişiklik:
@if (@X)==(@Y) @end /* JSCRIPT COMMENT **
@echo off
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
set process_to_check=%~1
cscript //E:JScript //nologo "%~f0" | find /i "%process_to_check%" >nul 2>&1 && (
echo process %process_to_check% is running
) || (
echo process %process_to_check% is not running
)
exit /b
************** end of JSCRIPT COMMENT **/
var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
var processes = new Enumerator(colProcess);
for (;!processes.atEnd();processes.moveNext()) {
var process=processes.item();
WScript.Echo( process.processID + " " + process.Name );
}
İki seçenek, özelliği olmayan makinelerde kullanılabilir TASKLIST
.
Nihai teknik kullanmaktır MSHTA
. Bu, XP ve üzeri her Windows makinesinde çalışır ve Windows komut dosyası ana bilgisayar ayarlarına bağlı değildir. çağrı MSHTA
bir az şey azaltabilecek performansı olsa (yine bat olarak kaydedilmelidir) bit:
@if (@X)==(@Y) @end /* JSCRIPT COMMENT **
@echo off
setlocal
if "%~1" equ "" echo pass the process name as forst argument && exit /b 1
:: first argument is the process you want to check if running
set process_to_check=%~1
mshta "about:<script language='javascript' src='file://%~dpnxf0'></script>" | find /i "%process_to_check%" >nul 2>&1 && (
echo process %process_to_check% is running
) || (
echo process %process_to_check% is not running
)
endlocal
exit /b
************** end of JSCRIPT COMMENT **/
var fso= new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1);
var winmgmts = GetObject("winmgmts:\\\\.\\root\\cimv2");
var colProcess = winmgmts.ExecQuery("Select * from Win32_Process");
var processes = new Enumerator(colProcess);
for (;!processes.atEnd();processes.moveNext()) {
var process=processes.item();
fso.Write( process.processID + " " + process.Name + "\n");
}
close();