7

ローカル IP アドレスを txt ファイルに書き込むバッチ ファイルを作成したいと考えています。このコードでバッチ ファイルを実行すると (ファイル パスが間違っていますが、それは問題ではありません):

ipconfig | find "IP Address" > \File.txt

Windows IP構成全体を取得します(すべての情報を表示しないように、いくつかの数字とxxxを変更しました)

    IP Address. . . . . . . . . . . . : 100.100.100.223

    IP Address. . . . . . . . . . . . : 192.xxx.xxx.xxx

ファイルのみに書き込みたい100.100.100.223

私はバッチファイルが初めてで、本当にたくさん検索しましたが、本当に混乱しています。(たぶん、間違ったキーワードで検索しています)。

Windows XP を使用していることを忘れていました (回答の一部が XP で機能しないため)。

4

4 に答える 4

7

コマンドを使用して、書き込まれたばかりのファイルの最初の行を変数に読み取り、次を使用SET /Pしてその行でファイルを上書きしますECHO

ipconfig | find "IP Address" > \File.txt
< \File.txt SET /P first_ip=
ECHO %first_ip%> \File.txt

更新(コメントへの回答):

FOR /FIP アドレスだけを抽出するには、次のようなループを使用できます。

ipconfig | find "IP Address" > \File.txt
< \File.txt SET /P first_ip=
FOR /F "delims=: tokens=2" %%I IN ("%first_ip%") DO (
  ECHO %%I> \File.txt
)

ループを使用するFOR /Fと、テキスト (ファイルまたは文字列リテラル) を 1 行ずつ処理し、指定された区切り文字に基づいて各行をフィールド (またはtokens ) に分割できます。このコマンドの詳細については、組み込みのヘルプ ( FOR /?) を参照してください。first_ipこの場合、処理される部分は文字列リテラル ( の値) であり、区切り文字は に設定され:、ループ変数 ( %%I) は IP アドレスである 2番目のトークンを受け取ることだけを追加します。

と IPの間のスペース:は保持されることに注意してください。つまり、トークン (  100.100.100.223) の一部になるため、ファイルにも書き込まれます。あまり満足できない場合は、次のようにサブルーチンを使用してスペースを取り除くことができます。

ipconfig | find "IP Address" > \File.txt
< \File.txt SET /P first_ip=
FOR /F "delims=: tokens=2" %%I IN ("%first_ip%") DO (
  CALL :MyEcho %%I
)
:: the following command is there merely to
:: avoid running (into) the subroutine again
GOTO :EOF

:MyEcho
ECHO %1> \File.txt

サブルーチンが呼び出されると ( CALL :MyEcho %%I)、引数が先頭のスペースと共に渡されます。しかし、サブルーチンのコマンド ラインを処理するとき、そのスペースは値の一部として認識されなくなります。これは、引数が引用符で囲まれていないため、パーサーは名前から 2 つのスペースで区切られた引数のみを認識するためです。したがって、%1サブルーチン内の は、先行スペースのないアドレスに評価されます。

于 2012-12-13T09:36:48.350 に答える
7
for /f "tokens=2 delims=:" %%a in ('ipconfig^|find "IPv4 Address"') do (
set ip=%%a
goto :BREAK
)

:BREAK
echo %ip: =% >ip.txt
于 2012-12-13T11:48:50.727 に答える
0

オートホットキーを使用できます。

メッセージボックスには、

msgbox, %A_ipAddress%  

または、テキストファイルユーザーで必要な場合

Fileappend, %A_ipaddress%. Ip.txt

役立つリンク。https://autohotkey.com/board/topic/45109-how-to-get-my-ip-address/

于 2016-06-10T07:59:50.830 に答える
0

PowerShell に問題がない場合は、次を試してください。

powershell.exe -c "gwmi Win32_NetworkAdapterConfiguration | ? { $_.IPAddress -ne $null } | % {$_.ipaddress[0]}"
于 2012-12-13T09:13:46.897 に答える