Hallo Sachverständige,
gibt es eine Methode, die lokale IP-Adresse des Rechners zu ermitteln und in einem Script weiterzuverarbeiten? Gerne auch über Shell-Befehle.
Hallo Sachverständige,
gibt es eine Methode, die lokale IP-Adresse des Rechners zu ermitteln und in einem Script weiterzuverarbeiten? Gerne auch über Shell-Befehle.
Hi Tondose!
could be difficult depending on how many ip adresses you have
for /f "tokens=2 delims=:" %A in ('ipconfig ^| findstr "IPv4"') do @echo %A | findstr /v "^$"
Thank you so much! Works great!
Alas, I am not able to process the result in mAirList script. A syntax like
var
IP: string;
begin
IP := ShellExecute(for, /f "tokens=2 delims=:" %A in ('ipconfig ^| findstr "IPv4"') do @echo %A | findstr /v "^$");
end.
will leave a syntax error. Maybe I went about too naively …?
Maybe? I see that your IP variable is expecting a String, but the command entered could return a list of more than one IP. hmm, I’m on the wrong computer, but can try later
Ececuted in cmd.exe
It does return a single local IP adress, indeed …
For me it returns all valid IPV4 addresses. My local IP, Tailscale IP etc… =)
Oh, forgot the single quotes. Now I’m getting a type mismatch like you do.
Got it working… with a not so neat workaround… whatever works… i guess?
ipconfig.mls
procedure OnLoad;
var
IPAddress, FilePath: string;
sl: TStringList;
begin
// Define the path to the batch script and text file
FilePath := 'C:\mAirlist\Instances\03-Thomas TEst\script\ip.txt';
// Execute the batch file to generate the IP file
ShellExecute('C:\mAirlist\Instances\03-Thomas TEst\script\ip.bat','');
sl := TStringList.Create;
try
sl.LoadFromFile(FilePath);
SystemLog(sl[0]);
finally
sl.Free;
end;
end;
begin
end.
ip.bat
@echo off
for /f "tokens=14 delims= " %%i in ('ipconfig ^| findstr /i "IPv4"') do echo %%i > C:\mAirlist\Instances\03-Thomas TEst\script\ip.txt
Hmmm … For me this writes a sole .
into ip.txt
only (and thus triggers a List index out of bounds (0)
error subsequently).