2017-04-06 61 views
0
set SourceDir=\\my_server\path  

if "%SourceDir:~0,2%"=="\\" (
    set sourceHost= REM not sure what to do. here I need to isolate hostname 
    for /f "tokens=2" %%b in ('nslookup %SourceDir%^|find /i "Address"') do set ser_ip=%%b 
    REM here I need to replace my_server with %ser_ip%  
) 

在此代碼中,我試圖用網絡路徑中的IP地址替換主機名。如何用網絡驅動器路徑中的IP地址替換主機名使用批量命令

    set sourceHost= REM not sure what to do. here I need to isolate hostname行,我需要的主機名從路徑
  1. REM here I need to replace my_server with %ser_ip%線需要隔離與檢索到的IP地址

更換主機名

  • 如果使用nslookup IP地址是10.12.13.14最後的結果應該是\\10.12.13.14\path 請幫我這兩行。謝謝!

  • +0

    您是否獲得了主機名它正在運行的電腦或服務器的主機名?你知道服務器的名字了嗎? –

    +0

    其服務器的主機名。網絡路徑傳遞給批處理文件。所以我將主機名作爲路徑的第一部分。 \\\'my_server' \ path –

    回答

    1

    我會用ping代替nslookup。如果有IPv6地址,則它們更難分析,並且ping具有-4選項。
    的IP很容易提取,因爲它是用方括號括:

    @Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
    set "SourceDir=\\my_server\path" 
    if "%SourceDir:~0,2%"=="\\" (
        for /f "delims=\" %%H in ("%SourceDir%" 
    ) Do for /f "tokens=2delims=[]" %%b in ('ping -n 1 -4 %%H^|find "["' 
    ) do Set "SourceDir=!SourceDir:%%H=%%b!" 
    ) 
    Echo %SourceDir% 
    
    +0

    我選擇這個答案是因爲@LotPings談論了IPV6的事情,儘管'aschipfi'答案滿足了我的要求。 –

    1

    這個怎麼樣(假設你要堅持到nslookup):

    set "SourceDir=\\my_server\path" 
    
    if "%SourceDir:~0,2%"=="\\" (
        rem // Extract server name and splif off remaining path: 
        for /F "tokens=1* delims=\" %%a in ("%SourceDir%") do set "sourceHost=%%a" & set "sourceShare=%%b" 
        for /F "tokens=2" %%b in ('nslookup %SourceDir%^|find /I "Address"') do set "ser_ip=%%b" 
        rem // Assemble new path by IP and former remaining path: 
        echo "\\%ser_ip%\%sourceShare%" 
    ) 
    
    相關問題