抑制/ f netsh wlan show界面之前和之后的空间

时间:2015-07-02 20:39:48

标签: variables interface batch-processing netsh wlan

好的,所以下面的脚本会删除之前和之后的空格,现在可以正常工作了。我相信有更好的方法来写这个。

    setlocal enableextensions enabledelayedexpansion
    for /f "tokens=1-2 delims=:" %a in ('netsh wlan show interface^|find "Name"') do (echo %b >> c:\temp\WLANINT.txt)
    for /f "delims=" %x in (c:\temp\WLANINT.txt) do SET WLANINT=%x
    :SpaceX
    echo "%WLANINT%"
    IF "%WLANINT:~0,1%"==" " (SET WLANINT=%WLANINT:~1,-1%)
    echo "%WLANINT%"
    IF "%WLANINT:~0,1%"==" " GOTO SpaceX
    echo "%WLANINT%"
    for /l %a in (1,1,100) do if "!WLANINT:~-1!"==" " set WLANINT=!WLANINT:~0,-1!
    echo."%WLANINT%"
    netsh wlan set profileorder name="%WIFI%" interface="%WLANINT%" priority=1
    echo "%WLANINT%"

1 个答案:

答案 0 :(得分:0)

尝试下一个代码段(另存为31194241.bat;运行它可能需要管理权限):

@ECHO OFF >NUL
SETLOCAL enableextensions
for /f "tokens=1,* delims=:" %%a in ('
    netsh wlan show interface^|find "Name"
    ') do for /f "tokens=*" %%x in ("%%b") do (
  echo netsh wlan set profileorder name="%WIFI%" interface="%%x" priority=1
)

对您的脚本所做的更改(read more):

  • 在所有%a%b%c中将%%a%%b%%c的百分号加倍,以便在{{1}中使用}} script;
  • 嵌套循环,而不是创建辅助文件;
  • .bat将留下修剪空白区域;
  • 高效for /f "tokens=*"命令仅仅netsh仅用于调试目的(在调试之后将echo替换为echo netsh。)

而不是批处理,可以使用命令行中的单行代码:

netsh