批量 - 将主机名转换为IP

时间:2014-04-15 20:05:45

标签: batch-file windows-7 dns cmd sccm

这可能很容易,但我找不到答案,而且我最近还没有做过(很明显)批量编程。我想要的只是在批处理文件中将主机名转换为其IP。

这是我的剧本:

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

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

谢谢。

2 个答案:

答案 0 :(得分:2)

localhost示例(不确定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

答案 1 :(得分: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