• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    文本最末列数值乘一个数的批处理实现
    a.txt

    1##4072.0###52.19### #72## #
    2#38705.8# # # 51.73## #70# #
    372###389.0##51.80##19.77# # 72#####
    4##59.71#3715.45##71######

    以#和空格作为分隔符,最后一列的数值乘以7,其他不变。
    已知的条件,数字是随机的,最末列的数值是整数,即使乘以7,仍在CMD所能计算范围内。
    #与空格与“.”的位置和数量与每行的列数都是随机的。
    输出如下:

    1##4072.0###52.19### #504## #
    2#38705.8# # # 51.73## #490# #
    372###389.0##51.80##19.77# # 504#####
    4##59.71#3715.45##497######

    只是对最末列的数值进行运算操作,其他不变。
    要求通用,高效。

    ieutk:
    复制代码 代码如下:

    @echo offsetlocal enabledelayedexpansion
    for /f "usebackq skip=35 delims=" %%a in ("%~dpnx0") do (
    set "var=%%a"
    set "e="
    set "m=0"
    set /a num+=1
    call :is "%%a"
    )
    for /l %%a in (1 1 %num%) do echo.!_str1%%a!!_num%%a!!_str2%%a!
    pause
    goto :eof
    :is
    set "str=%~1"
    if "%var:~-1%" lss "0" (
    set "e=%var:~-1%!e!"
    set "var=%var:~0,-1%"set /a m+=1
    goto is
    )
    set "_str2%num%=%e%
    set "_strn%num%=!str:~0,-%m%!"
    call :su "!_strn%num%!"
    goto :eof
    :su
    set "a="
    set "u=%~1"
    set "y=0"
    :st
    for /l %%a in (0 1 9) do if "%u:~-1%"=="%%a" set "a=%u:~-1%!a!"set /a y+=1
    set "u=%u:~0,-1%"
    for /l %%a in (0 1 9) do if "%u:~-1%"=="%%a" goto :st
    set /a x+=1
    set "_num%x%=%a%"
    set /a _num%num%*=7
    set "_str1%x%=!_strn%x%:~0,-%y%!"
    goto :eof

    1##4072.0###52.19### #504## #
    2#38705.8# # # 51.73## #490# #
    372###389.0##51.80##19.77# # 504#####
    4##59.71#3715.45##497######
    5##4072.0###52.19### #72## #
    6#38705.8# # # 51.73## #70# #
    772###389.0##51.80##19.77# # 72#####
    8##59.71#3715.45##71######

     

    terse:
    复制代码 代码如下:

    @echo offsetlocal enabledelayedexpansion
    for /l %%i in (0 1 9) do set %%i=%%i
    for /f "delims=" %%i in (1.txt) do set "str=%%i"call:lp
    pausegoto :eof
    :lp
    set/a n+=1
    set var=!str:~-%n%,1!
    if defined !var! (set str2=!var!!str2!set lp=lp) else (
    if not defined lp (set str1=!var!!str1!) else (
    set/a str2*=7set str=!str:~,-%n%!!var!!str2!!str1!
    >>b.txt echo !str!
    for %%i in (str1 str2 n lp) do set %%i=
    goto :eof
    ))
    goto lp

     

    youxi01:
    复制代码 代码如下:

    @echo off 2>nul 3>nul
    setlocal enabledelayedexpansion
    for /f "delims=" %%a in (list.txt) do (
    set /a n=0
    set var=%%a
    set var=!var:#= !
    for %%i in (!var!) do set res=%%i
    Rem '/*处理浮点///
    set /a ok=!res! (set /a res=!res!*7) || (set var=!res:*.=!
    for /l %%i in (0 1 9) do set var=!var:%%i= %%i!
    for %%i in (!var!) do set/a n+=1
    set res=!res:.=!
    set /a res=!res!*7
    call set res=%%res:~0,-!n!%%.%%res:~-!n!%%)
    echo !res!
    )
    pause>nul

     

    huahua0919:

    方法一:(用时0.25~0.30秒)
    复制代码 代码如下:

    @echo offsetlocal enabledelayedexpansion
    for /f "delims=" %%i in (LastNumberChange.txt) do set/a n+=1set LastLine=$%%i$
    for /f "delims=" %%i in (LastNumberChange.txt) do (
    set/a m+=1
    if %n% neq !m! call set "all=!all!%%iecho."
    )

    :start
    set FirstNumber=%LastLine:~,1%
    set "all1=!all1!%FirstNumber%"
    set LastLine=%LastLine:~1%
    echo %LastLine%|findstr "[0-9]" >nulgoto :start
    :all1
    set /a t+=1
    call set LastOne=%%all1:~-!t!%%
    set/a x=LastOne*1
    if "%LastOne%"=="%x%" goto :all1
    set/a LastOne=%LastOne:~1%*7
    set /a t-=1
    set xlm=!all1:~,-%t%!
    Set "Sum=%all%%xlm%%LastOne%%LastLine%"
    echo %Sum:$=%
    pause

    方法二:(用时0.02~0.05秒)
    复制代码 代码如下:

    @echo offsetlocal enabledelayedexpansion
    for /f "delims=" %%i in (LastNumberChange.txt) do set/a n+=1set LastLine=$%%i$
    for /f "delims=" %%i in (LastNumberChange.txt) do (
    set/a m+=1
    if %n% neq !m! call set "all=!all!%%iecho."
    )
    :LastOne
    set/a x+=1
    call set LastOne=%%LastLine:~-!x!,1%%
    set /a Mult=%LastOne%*1
    if not "%Mult%"=="%LastOne%" goto :LastOne
    set/a x-=1
    call set Front=%%LastLine:~,-%x%%%
    call set Last=%%LastLine:~-%x%%%
    :Middle
    set/a x1+=1
    call set LastOne1=%%Front:~-!x1!%%
    set /a Mult1=%LastOne1%*1
    if "%Mult1%"=="%LastOne1%" goto :Middle
    set/a Middle=%LastOne1:~1%*7
    set/a x1-=1
    call set Front=%%Front:~,-%x1%%%
    set "Sum=%all%%Front%%Middle%%Last%"
    echo %Sum:$=%
    pause

     

    batman:
    复制代码 代码如下:

    @echo off
    for /f "delims=" %%i in (1.txt) do (
    set "str=%%i"set "begin=a"
      setlocal enabledelayedexpansion
    call :lp
    echo !str!!a!!var!!last!
      endlocal
    )
    pause>nulgoto :eof
    :lp
    set "a=%str:~-1%"set "str=%str:~,-1%"
    if "%a%" geq "0" (
    if "%a%" leq "9" set "flag=a"set "begin="
    )
    if defined flag (
    set var=%a%!var!set "flag="
    ) else (
    if defined begin (
    set last=%a%!last!
    ) else (
      set /a var*=7goto :eof
    )
    )
    goto lp

     

    随风:
    复制代码 代码如下:

    @echo offsetlocal EnableDelayedExpansion
    for /l %%a in (0 1 9) do set .%%a=%%a
    for /f "delims=" %%a in (a.txt) do (
    set flag=set num=set sun=set "str=%%a"
    call :loop
    )
    pause
    :loop
    set "var=!str:~-1!"
    if defined .!var! (set num=!var!!num!set flag=a) else (set sun=!var!!sun!set flag=)
    if not defined num set str=!str:~0,-1!goto loop
    if defined flag set str=!str:~0,-1!goto loop
    set /a num*=7
    echo !str!!num!!sun:~1!
    goto:eof
    上一篇:批处理数值排序问题
    下一篇:批处理按要求将字符串分段输出的实现代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    文本最末列数值乘一个数的批处理实现 文本,最末,列,数值,乘,一,