1

わかりました、私はバッチファイルに関しては少し初心者なので、優しくしてください:)

プログラムを再起動するバッチ ファイルを作成しています。コンピューターが特定の IP アドレスを持っている場合にのみ、プログラムの 1 つを開く必要があります。したがって、私が立ち往生している行は、マシンのIPを取得する必要があり(静的IPに設定されています)、正しいIPがあればプログラムを開きます。正しい IP がない場合は、次のコマンドに進みます。私は周りをたくさん探しましたが、仕事に取り掛かることができたものは何も見つかりません。

したがって、この行は次のようになります。 1. IP を検索します。 2. マシンの IP が (議論のために) 192.168.1.5 の場合、特定のプログラムを実行する必要があります。3. IP が 192.168.1.5 でない場合は、別のプログラムを閉じる次の行に進みます。どんな助けでも大歓迎です!ありがとうございました!

編集

setlocal enabledelayedexpansion
taskkill /f /im "program1.exe"
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do (
set ip=%%a
set ip=!ip: =!
goto :BREAK
)
:BREAK
if %ip%==192.168.165.82 (
C:\Folder\Folder\Folder\program1.exe
) else (
taskkill /f /im "Pro gram 2.exe"
)
start "" "C:\Program Files\folder\Pro gram 2.exe"
taskkill /f /im "program3.exe"
if exist "C:\Program Files\folder\program3.exe" start "" "C:\Program Files\folder\program3.exe"
4

2 に答える 2

0
setlocal enabledelayedexpansion
for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IPv4 Address"') do (
set ip=%%a
set ip=!ip: =!
goto :BREAK
)
:BREAK
if %ip%==192.168.1.5 (
yourprogram.exe
) else (
taskkill /im anotherprogram.exe /f
)

これにより、最初のアダプターIPが使用されます。複数ある場合は、必要なアダプターをフィルターに掛ける必要があります。

ホスト名でするには、次のようなものを使用できます

for /f "tokens=*" %%a in ('hostname') do if "%%a"=="t2" runprogram.exe
于 2013-01-29T15:05:59.607 に答える
0

実行している Windows のバージョンをお知らせください。私は XP マシンを使用しています。実行するとIPCONFIG、結果は IP アドレスであり、IPv4 ではありません。

Windows 7 マシンで同じコマンドを実行すると、結果を IPv4 でフィルタリングする必要があることはわかっていますが、これは Windows XP では機能しません。

そうは言っても、XP マシンで実行している場合は、存在しない IPv4 をフィルタリングしているため、IP 変数は何も設定されず、コードは実行されません。

実行している OS のバージョンを報告してください。それに応じてフィルターを変更します。コマンドラインに移動して入力するだけでIPCONFIG、出力がどのようになるかを確認できます。

Windows XP の場合、for ループを次のように変更します。

for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find "IP Address"') do...

私のPCでこれを行うと、目的のIPアドレスが変数として設定されます。

于 2013-01-29T19:21:39.607 に答える