1

Пока что в моем командном файле есть следующее:

%comspec% /c ipconfig | find "IPv4" > %HOMEPATH%\desktop\MyIP.txt
%comspec% /c start notepad %HOMEPATH%\desktop\MyIP.txt

Однако, когда я запускаю командный файл, MyIP.txt при отображении становится пустым.

С другой стороны, когда я запускаю каждую строку одну из другой из поля поиска Windows-Start, это работает.

Есть идеи как это исправить?

4 ответа4

3

Работает нормально из командного файла здесь.

Пара предложений:

  • Попробуйте обернуть пути к файлам HOMEPATH в кавычки, чтобы компенсировать любые потенциальные пробелы:
    %comspec% /c ipconfig | find "IPv4" > "%HOMEPATH%\desktop\MyIP.txt"
  • Убедитесь, что вы запускаете пакетный файл как пользователь, у которого есть действительный домашний путь и рабочий стол (а не, как, скажем, учетная запись "System").
  • Попробуйте использовать echo %HOMEPATH% в другом пакетном файле и запустите его таким же образом, проверьте вывод, чтобы убедиться, что% HOMEPATH% расширяется до того, что вы ожидаете (совет добавьте "pause" в конец пакета, чтобы он ждал вас) ударить ключ).
1

Это прекрасно работает с Windows 10:

@echo off
for /f "skip=1 delims={}, " %%A in ('wmic nicconfig get ipaddress') do for /f "tokens=1" %%B in ("%%~A") do set "IP=%%~B"
for /f "tokens=1 delims=:" %%j in ('ping %computername% -4 -n 1 ^| findstr Reply') do (
    set localip=%%j
)
echo Public IP is: %IP%
echo Local  IP is: %localip:~11%

Он возвращает как публичные, так и частные IP-адреса.

1

Сохраните приведенный ниже код в виде командного файла в папке system32.
Для Windows 7 сохраните командный файл в C:\Windows\System32.

@echo.
@echo                         IP INFORMATION
@echo                         By:Aswin Sha

@ipconfig/all | find "Subnet Mask"
@ipconfig/all | find "IPv4" 
@ipconfig/all | find "Default Gateway"
@ipconfig/all | find "Host Name"
@ipconfig/all | find "DNS Suffix Search List"
@ipconfig/all | find "Physical Address"
@ipconfig/all | find "DHCP Enabled"
@ipconfig/all | find "DHCP Server"
@ping 127.0.0.1
@echo.
@pause
0

Вы должны использовать командный файл? В соответствии с вашими требованиями следующий код, сохраненный как GetIP.vbs и выполненный, запустит Блокнот и напечатает ваш IP-адрес в нем, не сохраняя сначала в виде текстового файла:

Set colItems = GetObject("winmgmts:\\.\root\CIMV2").ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE", , 48)
For Each objItem In colItems
    If InStr(objItem.IPAddress(0), ":") = 0 Then
        strIP = "Description: " & objItem.Description & vbCR & "IP Address : " & objItem.IPAddress(0) & vbNewLine
    End If
Next
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "Notepad"
WScript.Sleep 100
WshShell.AppActivate "Notepad"
WshShell.SendKeys strIP

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .