有人可以帮我这个吗? 我有一个batch file,我试图根据当前的内部IP地址连接一对networking驱动器。 问题是,它正在输出以下内容:
首页192.168.2.99地下室
它应该只是输出:Home 192.168.2.99
代码如下:
@echo off @for /F "tokens=2 delims=:" %%i in ('"ipconfig | findstr IP | findstr 192."') do SET LOCAL_IP=%%i @if ("%LOCAL_IP%" == "192.168.2.99") Call ConnectHome else (Call ConnectBasement) :ConnectHome @echo Home %LOCAL_IP% :ConnectBasement @echo Basement @REM net use R: \\192.168.2.98\Storage @REM net use S: \\192.168.2.98\MyStuff @REM net use T: \\192.168.2.98\Server
我也试着用以下代替IF语句:
@if ("%LOCAL_IP%" == "192.168.2.99") goto ConnectHome else (goto ConnectBasement)
和:
@if ("%LOCAL_IP%" == "192.168.2.99") goto :ConnectHome else (goto :ConnectBasement)
结果总是一样的…操作系统是Windows 7专业版
Call
旨在调用您当前所在的一个不同的批处理文件(请参阅此处 )。 如果它传递了一个标签,它将从该标签执行,但是它会执行到文件末尾,所以当它到达ConnectBasement行时不会停止。
你可能需要的是在文件底部添加一个标签:END
,在你的:ConnectBasement行之前添加Goto :END
。 为了一致性,我可能会建议使用Goto
而不是Call
。 (如果您愿意的话,您也可以使用Goto :EOF
而无需定义标签。)
(或者,学习PowerShell并使用其功能来实现这个更干净;-))
进入ConnectHome之后,它会转到:ConnectBasement。 添加goto :eof
就在@echo Home %LOCAL_IP%
。
ConnectHome部分之后,您是否忘记停止执行? 我不确定,但是我认为这批作品在那之后继续印刷“地下室”。
编辑:Jeroen打我:)