1

好吧,在批处理文件方面我有点菜鸟,所以请温柔:)

我正在编写一个重新启动程序的批处理文件。仅当计算机具有特定 IP 地址时,才应打开其中一个程序。所以我坚持的那条线,必须得到机器的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 变量将永远不会设置为任何值,您的代码也不会运行。

请报告您正在运行的操作系统版本。相应地更改您的过滤器。您可以转到命令行并键入IPCONFIG并查看输出的内容。

Fow Windows XP 将 for 循环更改为以下内容:

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

当我在我的 PC 上执行此操作时,会将所需的 IP 地址设置为变量。

于 2013-01-29T19:21:39.607 回答