我想做什么:
。通过搜索.txt文件查找并计算(通过用户输入)远程机器的IP并将该信息传递给连接程序;
到目前为止我的批次:
@Echo off
mode con: cols=50 lines=20
Title direct connect
:start
color 0A
cls
Set Var=
SET /P var= Name:
FINDSTR %var% C:\IP_LAN.txt
Pause
。此时我得到结果:10001; 225.225.225.192; 192.192.192.1(名称;子网掩码; IP)
然后如果我使用FOR / F:
for /F "tokens=2,3 delims=; " %%a in ('FINDSTR %var% C:\IP_LAN.txt') DO @echo 2nd token "%%a" 3rd token "%%b"
我确实:
Name:10001
10001;225.225.225.192;192.192.192.1
2nd token "225.225.225.192" 3rd token "192.192.192.1"
我想在以下问题中使用第2和第3个令牌:
IF IF = 225.225.225.192那么第3个是+38(192.192.192.1 ==> 192.192.192.39)
IF IF = 225.225.225.224那么第3个是+17(192.192.192.1 ==> 192.192.192.18)
用作主机:
start "C:\Program Files\UltraVNC" vncviewer.exe -connect -4greycolors **host** ::xxxx -Password xxxxxx
这是我的第一批真正的批次,过去2天我已经尽了最大努力,但我显然被卡住了。任何帮助将不胜感激。
答案 0 :(得分:0)
下一个代码段应该可以使用。请注意:getX
计算子程序:
@ECHO OFF
SETLOCAL enableextensions
::
:: don't let %var% empty as 'FINDSTR C:\IP_LAN.txt' will wait for user input
Set "Var=xxx"
SET /P "var= Name: "
for /F "tokens=2,3 delims=;" %%a in ('FINDSTR %var% C:\IP_LAN.txt') DO (
@echo 2nd token "%%a" 3rd token "%%b"
if "%%a"=="225.225.225.192" call :Getx "%%b" 38
if "%%a"=="225.225.225.224" call :Getx "%%b" 17
)
:: further code
goto :eof
:getX
set "hostIP="
set "iiPlus="
for /F "tokens=1-4 delims=." %%A in ("%~1") DO (
set "hostIP=%%A.%%B.%%C"
set /A "iiPlus=%%D + %~2"
)
echo start ... host %hostIP%.%iiPlus%
goto :eof
但是,您的start
命令可能无法正常工作,因为双引号括起的第一个参数将被视为命令标题;尝试下一个语法模板:
START "title" [/D path] [options] "command" [parameters]
修改:输出(使用其他文件名而不是C:\IP_LAN.txt
,请参阅type
)。 :: more code 注释指出更多代码是 facultative ,可选。
==>type D:\bat\StackOverflow\files\30443425.txt
10001;225.225.225.192;192.192.192.1
10002;225.225.225.224;192.192.192.1
==>D:\bat\StackOverflow\30443425a.bat
Name: 10001
2nd token "225.225.225.192" 3rd token "192.192.192.1"
start ... host 192.192.192.39
==>D:\bat\StackOverflow\30443425a.bat
Name: 10002
2nd token "225.225.225.224" 3rd token "192.192.192.1"
start ... host 192.192.192.18
下一个输出也可能发生:
==>D:\bat\StackOverflow\30443425a.bat
Name: 225
2nd token "225.225.225.192" 3rd token "192.192.192.1"
start ... host 192.192.192.39
2nd token "225.225.225.224" 3rd token "192.192.192.1"
start ... host 192.192.192.18
资源(必读):
%~A
,%~1
等特殊页面)Command Line arguments (Parameters)