标题: [文本处理] 请教如何用for和if来实现文本截取和判断? [打印本页]
作者: 010603119 时间: 2008-9-17 19:40 标题: 请教如何用for和if来实现文本截取和判断?
现在有一组数据,格式如下:
zxcv,2
abcd,6
qwer,19
……
前面是一组字符串,中间是一个英文逗号,最后是另一个数字。可以看做是一个X,Y形式的数据
现在要求处理成这个样子:
zxcv
zxcv
abcd
abcd
abcd
abcd
qwer
qwer
qwer
qwer
……
呵呵,没看明白吧?简单解释一下:如果Y小于等于4,则将前面的字符串重复Y次,如果Y大于4,则将前面的字符串重复4次。然后将结果形成一个列表文件。
经过一段时间的研究,我写了如下的代码来实现:
for /f "tokens=2 delims=," %%i in (abc.txt) do (
if %%i LEQ 4 ( for /l %%j in (1,1,%%i) do echo %%j >> result.txt ) else ( for /l %%k in (1,1,4) do echo %%k >> result.txt)
)
第一行是将Y赋给参数i,第二行是判断Y是否小于等于4,如果是则将X重复Y次写入到result.txt中,否则将X重复4次写入result.txt中。但发现无论如何都不能成功,我死活也查不出原因,因此特来请教各位高手,麻烦指点一二,非常感谢!
[ 本帖最后由 010603119 于 2008-9-18 04:10 编辑 ]
作者: shqf 时间: 2008-9-17 19:58
根据原思路,尽量少修改如下:- @echo off
- for /f "tokens=1,2 delims=," %%i in (abc.txt) do (
- if %%j LEQ 4 ( for /l %%k in (1,1,%%j) do echo %%i >> result.txt ) else (
- for /l %%k in (1,1,4) do echo %%i >> result.txt)
- )
复制代码
原代码问题在于第1、第2个FOR用了相同的变量名,还有X的值没有读入某个变量,导致不能写到新文件中去了。
[ 本帖最后由 shqf 于 2008-9-17 20:04 编辑 ]
作者: zqz0012005 时间: 2008-9-17 20:07
不会就干脆不要写!
别人看代码比写自己代码还累
if %%j LEQ 4 ( for /l %%a in (1,1,%%j) do echo %%i >> result.txt ) else ( for /l %%a in (1,1,4) do echo %%i >> result.txt)
作者: pusofalse 时间: 2008-9-17 20:55
- @echo off&setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=," %%a in (a.txt) do (
- if %%b leq 4 (set a=%%b) else set a=4
- for /l %%i in (1 1 !a!) do echo %%a
- )>>result.txt
- start result.txt
复制代码
作者: 010603119 时间: 2008-9-17 21:30
非常感谢楼上各位的解答,具体效果一会我测试一下。
3楼的兄弟看来是个急性子啊。
作者: 010603119 时间: 2008-9-19 02:56
问题已解决,再次感谢楼上各位相助。
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |