Board logo

标题: [文本处理] 批处理字符串循环2次如何给变量赋值? [打印本页]

作者: psstudio    时间: 2021-4-25 10:04     标题: 批处理字符串循环2次如何给变量赋值?

源码如下: 一个带宽测速的命令结果字符截取,想把下载的速度和上行的速度并排显示出来,但是这个好像是循环了2次就把前面的变量二次赋值了。有没有什么办法可以保留第一次的赋值变量?
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "tokens=2 delims=:,(" %%j in ('speedtest --accept-license -P0 -s 29071^|findstr Mbps') do (
  3. set "line1=%%j"
  4.                 set "line2=%%j"
  5. echo !line1! !line2!
  6. )
  7. pause
复制代码

作者: went    时间: 2021-4-25 10:23

for ... do (
    if "!line1"=="" (
        set "!line1=%%j"
    ) else (
        echo !line1! %%j
    )
)
作者: qixiaobin0715    时间: 2021-4-25 10:33

  1. for ...... (
  2.     set /a n+=1
  3.     if !n!==1 (set line1=%%j) else set line2=%%j
  4. )
  5. echo,%line1%
  6. echo,%line2%
  7. pause
复制代码

作者: 路过    时间: 2021-4-25 11:56

本帖最后由 路过 于 2021-4-25 16:30 编辑
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /f "tokens=2 delims=:,(" %%j in ('speedtest --accept-license -P0 -s 29071^|findstr Mbps') do (
  3.         if not defined line1 (set "line1=%%j")
  4.         set "line2=%%j"
  5. )
  6. echo !line1! !line2!
复制代码

作者: newswan    时间: 2021-4-25 14:03

  1. set n=0
  2. for /f "tokens=2 delims=:,(" %%j in ('speedtest --accept-license -P0 -s 29071^|findstr Mbps') do (
  3.         set /a n+=1
  4.         set "line!n!=%%j"
  5. )
复制代码

作者: psstudio    时间: 2021-4-25 14:12

回复 4# 路过


    你这个不行,大哥。
作者: psstudio    时间: 2021-4-25 14:19

回复 3# qixiaobin0715


    for /f "tokens=2 delims=:,(" %%j in ('speedtest --accept-license -P0 -s 29071^|findstr Mbps') do (
  set /a n+=1
    if !n!==1 (set line1=%%j) else set line2=%%j
)
echo %line2% %line1%
效果不错! 感谢大哥~




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2