如何批量设置文本文件中特定字符串的变量?

时间:2016-06-15 02:58:58

标签: batch-file

我需要能够使用文本文件中的字符串设置变量,例如,如果文本文件内容如下:

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.谢谢!

1 个答案:

答案 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。