2017-04-06 23 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アドレスに置き換えようとしています。私は、nslookupコマンドのIPアドレスが10.12.13.14最後の結果である場合には、取得したIPアドレス バッチコマンドを使用してネットワークドライブパスのホスト名をIPアドレスに置き換える方法

とホスト名を置き換えるためにREM here I need to replace my_server with %ser_ip%ラインのニーズにパス

  • からホスト名を特定する必要がset sourceHost= REM not sure what to do. here I need to isolate hostnameラインで

    1. \\10.12.13.14\path 私はこれらの2つの行に助けてください。ありがとうございました!

  • +0

    あなたは、ホスト名を取得しています実行しているPCの名前、またはサーバーのホスト名?あなたはすでにサーバーの名前を知っていますか? –

    +0

    サーバーのホスト名。ネットワークパスがバッチファイルに渡されます。だから私はパスの最初の部分としてホスト名を持っています。 \\\ 'my_server' \ path –

    答えて

    1

    nslookupではなくpingを使用します。 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

    私は、IPV6の事柄のためにこの答えを選んでいます@LotPingsが話しますが、' 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%" 
    ) 
    
    関連する問題