这可能很容易,但我找不到答案,而且我最近还没有做过(很明显)批量编程。我想要的只是在批处理文件中将主机名转换为其IP。
这是我的剧本:
set /p ip="IP: " %=%
start "" "C:\Program Files (x86)\CtrlDistance SCCM\cmRcViewer.exe" %ip% \\sccm
exit
没有什么真正的花哨,这个.bat文件只是在用户输入IP后启动SCCM。但是,命令行中的SCCM不接受主机名作为参数,这就是为什么我希望在将%ip%发送到应用程序之前自动转换它。
谢谢。
答案 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