1

这可能是一个简单的问题,但我找不到答案,而且我最近(显然)没有真正做过很多批处理编程。我想要的只是在批处理文件中将主机名转换为其 IP。

这是我的脚本:

set /p ip="IP: " %=%
start "" "C:\Program Files (x86)\CtrlDistance SCCM\cmRcViewer.exe" %ip% \\sccm 
exit

没什么特别的,这个 .bat 文件只是在用户输入 IP 后启动 SCCM。但是,命令行中的 SCCM 不接受主机名作为参数,这就是为什么我想在将%ip%发送到应用程序之前自动转换它的原因。

谢谢你。

4

2 回答 2

2

本地主机示例(不确定 ipv6 输出):

@echo off
setlocal
    set "ipadr="
    ping -n 1 localhost 2>nul 1>&2 && (
        for /f "tokens=2 delims=[]" %%h in ('ping -n 1 localhost') do (
            set "ipadr=%%h"
            goto :break_loop
        )
    )
    :break_loop
    if defined ipadr ( 
        echo %ipadr% 
        rem you can start SCCM here
    ) else (
        echo host does not exist
    )
endlocal
于 2014-04-15T20:30:09.187 回答
1

最终代码:

@echo off
setlocal

if "%1"=="" (
    set /p host="IP: " %=%
) else (
    set host=%1
)

set "ip="
ping -n 1 %host% 2>nul 1>&2 && (
    for /f "tokens=2 delims=[]" %%h in ('ping -n 1 %host%') do (
        set "ip=%%h"
        goto :break_loop
    )
:break_loop
    if not defined ip ( set ip=%host% )
)

if defined ip ( 
    start "" "C:\Program Files (x86)\CtrlDistance SCCM\cmRcViewer.exe" %ip% \\sccm
) else (
    echo no_ping
    pause
)

endlocal
exit
于 2014-04-16T15:00:09.120 回答