3

Windows XP Service Pack 3 を使用しており、Windows レジストリでコマンド拡張機能がデフォルトで有効になっています。どういうわけか、次のコマンドはこのバージョンの Windows では機能しませんが、Windows Server 2003 または Windows Vista Business で実行すると問題なく機能します。どんな手掛かり?

問題は、Windows XP では、/f オプションがまったく機能していないように見え、コマンドの do 部分が実行されないことです。

これはコマンドです:

for /f "tokens=1 delims=: " %A in ('tasklist /FI "IMAGENAME eq python.exe" /NH') do (
If "%A" == "python.exe" (
    echo "It's running"
) Else (
    echo "It's not running"
)
)

前もって感謝します。

4

4 に答える 4

7

これは、タスクが見つからない場合にtasklist.exe出力するためです。ループは表示のみになるため、実行されていない場合はSTDERR、ループするものは何もありません。for /fSTDOUTpython.exe

( )STDERRへのリダイレクトは機能します:STDOUT2>&1

for /F "tokens=1 delims=: " %A in ('tasklist /FI "IMAGENAME eq python.exe" /NH 2^>^&1') do (
  if "%A"=="python.exe" (
    echo "It's running"
  ) else (
    echo "It's not running"
  )
)

^文字は、これが機能するために必要なエスケープシーケンスです。

于 2008-12-11T13:14:29.007 に答える
1

以下は、私の Windows XP コンピュータで動作します。

@echo off
for /f "tokens=1 delims=: " %%A in ('tasklist /FI "IMAGENAME eq java.exe" /NH') do (
    If "%%A" == "java.exe" (
        echo "It's running"
    ) Else (
        echo "It's not running"
    )
)

%%A
(申し訳ありませんが、テスト時に python.exe が実行されていなかったため、java.exe を使用しました ;) )の使用に注意してください。

于 2008-12-11T13:05:10.257 に答える
0

これは機能し、表示されません

情報:指定された基準で実行されているタスクはありません

メッセージ:

@echo off
set found=0

for /f "tokens=1 delims=: " %%A in ('tasklist /NH') do (
    If /i "%%A" equ "python.exe" (
        set found=1
    ) 
)

if %found%==1 (
    @echo It's running
) else (
    @echo It's not running
)
于 2008-12-11T13:21:24.843 に答える
0
Set RUNNING=False
for /f "tokens=1 delims=: " %%a in ('tasklist /FI "IMAGENAME eq python.exe" /NH 2^>NUL') do (Set RUNNING=True)
If %RUNNING% == True (
    @Echo It IS running
) ELSE (
    @Echo It's NOT running
)
于 2010-02-15T17:17:06.517 に答える