本帖最后由 踏沙行 于 2018-8-30 05:16 编辑
原贴搜索不到,只好发新帖求助。不过虽与原贴处理的文档相同,但问题不同。
已知:I:\2.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,然后输出新的结果
我的代码如下:- @echo off
- Setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in (H:\2.txt) do (
- call :lp "%%a" string
- echo,%string% )
- pause&exit
-
- :lp
- set "s=%~1"
- set/a "i=0" &set "flag="
- :loop
- set/a "i-=1"
- if "!s:~%i%,1!" geq "0" if "!s:~%i%,1!" leq "9" set/a "flag=i"
- if not defined flag goto loop
- set "begin=!s:~,%flag%!"
- set/a "var=!s:~%i%,1!*7","n=flag+1"
- set "end=!s:~%n%!")
- echo,old=%s%
- set "new=%begin%%var%%end%"
- set %2=%new%
- goto:eof
复制代码 问题:在子标签中倒是可以实现既定效果。但是:
1、如果把结果返回,返回值为空,不知道到底该怎么返回?现在的代码中哪里有错误,怎么修改?
2、Setlocal enabledelayedexpansion声明好像在主程序中没有作用,怎么把它限定在子标签区域?做这种调整有什么意义? |