我需要能够使用文本文件中的字符串设置变量,例如,如果文本文件内容如下:
Admin State State Type Interface Name
-------------------------------------------------------------------------
Enabled Connected Dedicated Wi-Fi
Disabled Disconnected Dedicated Local Area connection
可以使用以下方法找到:
netsh int show int | clip
并将其粘贴到文本文件中。
我需要能够使用位置上的任何字词" Wi-Fi"是作为一个变量。我必须使用的单词可以被识别为具有"已启用"在它上面和#34;接口名称"或者行中的第四个字符串。 我不能用
set INTERFACE=Wi-Fi
因为当我在另一台计算机上运行脚本时,他们有一个不同的接口名称。
非常感谢任何帮助,我使用的是Windows 10.谢谢!
答案 0 :(得分:1)
您使用的是Windows 10,您拥有PowerShell 5. 十年的批处理后文件进度。任何帮助表示赞赏推送不使用批处理文件怎么样?
$interface = (Get-NetAdapter |Where Status -eq Up)[0].Name
非常好的做法是不要滥用for
循环来破坏文本以完成任何事情。我想,这看起来像是:
@echo off
rem allow the variable check to work properly in the loop
SETLOCAL ENABLEDELAYEDEXPANSION
rem clear the interface value
SET INTERFACE=
rem loop over netsh output lines, searching
rem for lines which start "Enabled" and splitting by spaces
for /f "tokens=3,* delims= " %%A in ('netsh int show int^|findstr "^Enabled"') do (
# update interface with the first one, not for the rest
# or it will always end up as the last one
if "!INTERFACE!"=="" (set INTERFACE=%%B)
)
编辑:使用findstr添加更正,来自@dbenham。