好吧,就批处理文件而言,我有点像菜鸟,所以请保持温和:)
我正在编写一个重启程序的批处理文件。只有在计算机具有某个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"
答案 0 :(得分: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
答案 1 :(得分: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地址设置为变量。