![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 11:16 |
共 48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]通过原始文本文件转换成另一种格式的文本文件 |
| 可打印版本 4,043 / 40 |
| 第16楼 dhlmdsnw | 发表于 2008-01-30 00:54 |
| 初级用户 发帖 59 积分 127 | |
|
各位大大加油啊。。。人名问题及最后一行汇总行问题谁能帮我处理一下啊。。。
小妹急切盼望中。。。。 |
|
| 第17楼 terse | 发表于 2008-01-30 02:33 |
| 银牌会员 发帖 946 积分 2,404 | |
|
因为中英文空格 人名问题没解决
@echo off set m=0 set psrc=0 setlocal enabledelayedexpansion for /f "tokens=2,3,5" %%i in (a01.txt) do ( set/a n+=1 set src1=%%i set src2=%%j set src3=%%k set var=00000!n! set var=!var:~-6! set vcr=00000000!m! set vcr=!vcr:~-9! for /f "delims=0 tokens=*" %%a in ("!src2!") do set/a psrc=!psrc!+%%a >>14080005022%date:~2,2%%date:~5,2%%date:~8,2%.txt echo.140800050202!src1!3!var!00!src2!000000000000000011 !vcr!!src3! set/a m+=1 ) set psrc=000000000000000%psrc% set scr=00000000000000000%n%2 set/a n+=1 set var=00000%n% >>14080005022%date:~2,2%%date:~5,2%%date:~8,2%.txt echo.114080005020214080100112003624143%var:~-6%%psrc:~-16%%scr:~-19% pause [ Last edited by terse on 2008-1-30 at 03:05 AM ] |
|
| 第18楼 dhlmdsnw | 发表于 2008-01-30 13:45 |
| 初级用户 发帖 59 积分 127 | |
|
先感谢terse大虾的大力帮助,我还没试,只不过一回来就看见大大给我回了帖就感激万分!
在人名问题上如果先不考虑外国人名的问题,就是说全部都是中文的情况可以解决吗?——因为在实际操作中,我还没碰上要外国人名操作的,只是我自己想的。——如果仅中文人名可以操作的话,还请大大先把代码发上来给我。 再次感谢terse大大!!! |
|
| 第19楼 dhlmdsnw | 发表于 2008-01-30 14:44 |
| 初级用户 发帖 59 积分 127 | |
|
terse大大上面的编码,我稍微按照我的需求做了一些细节的修正:
1.第五行a01.txt,改成了a.txt 2.第十五行14080005022%date:~2,2%%date:~5,2%%date:~8,2%.txt,改成了140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt。改这个最不好意思的,这个是我自己弄错了文件命名规则。 3.同样是第十五行echo.140800050202!,改成了echo.2140800050202! 4.同第十五行一致,第二十一行的14080005022%date:~2,2%%date:~5,2%%date:~8,2%.txt,改成了140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt。 改完后的代码全部如下: @echo off set m=0 set psrc=0 setlocal enabledelayedexpansion for /f "tokens=2,3,5" %%i in (a.txt) do ( set/a n+=1 set src1=%%i set src2=%%j set src3=%%k set var=00000!n! set var=!var:~-6! set vcr=00000000!m! set vcr=!vcr:~-9! for /f "delims=0 tokens=*" %%a in ("!src2!") do set/a psrc=!psrc!+%%a >>140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt echo.2140800050202!src1!3!var!00!src2!000000000000000011 !vcr!!src3! set/a m+=1 ) set psrc=000000000000000%psrc% set scr=00000000000000000%n%2 set/a n+=1 set var=00000%n% >>140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt echo.114080005020214080100112003624143%var:~-6%%psrc:~-16%%scr:~-19% pause 经过试验,主要产生以下两个问题: 1.“名字+后面的空白”字节数不够,需要的是这样的结果:“名字+后面的空白”全部选中,然后把它复制粘贴到Excel的单元格中,用函数len来验证,如果名字是两个字的,“名字+后面的空白”len的返回值是51;如果名字是三位数的,“名字+后面的空白”len的返回值是50;如果名字是四位数的,“名字+后面的空白”len的返回值是49 。而用大大的代码,名字是两位数的,“名字+后面的空白”len的返回值是16;名字是三位数的,“名字+后面的空白”len的返回值是17。相差较大。 2.最后一行汇总行,最后一个数据2后面所需的空白数,用Excel的len函数返回值来表示是需要82个字节。而大大代码所产生空白数仅47。也是相差较大。 最后还有名字的处理问题帮助多多改善。 上面的细节全部处理后,所产生的文件用Ctrl+A全选后,蓝色的光幕是填满每一行,每一行没有任何的空白。 还请大大继续帮我改善这个代码! 在此万分感谢!!! |
|
| 第20楼 terse | 发表于 2008-01-30 21:17 |
| 银牌会员 发帖 946 积分 2,404 | |
|
重新改一下 不知有效果否?
@echo off set m=0 set psrc=0 set len= setlocal enabledelayedexpansion for /f "tokens=2,3,5" %%i in (a.txt) do ( set/a n+=1 set src1=%%i set src2=%%j set src3=%%k set var=00000!n! set var=!var:~-6! set vcr=00000000!m! set vcr=!vcr:~-9! for /f "delims=0 tokens=*" %%a in ("!src2!") do set/a psrc=!psrc!+%%a for /f "skip=1 delims=:" %%x in ('^(echo "!src3!"^&echo.^)^|findstr /o ".*"') do set/a l=63-%%x-5 call :loop !l! >>140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt echo.2140800050202!src1!3!var!00!src2!000000000000000011 !vcr!!src3! set/a m+=1 ) set psrc=000000000000000%psrc% set scr=00000000000000000%n%2 set/a n+=1 set var=00000%n% >>140800050%date:~0,4%%date:~5,2%%date:~8,2%001.txt echo.114080005020214080100112003624143%var:~-6%%psrc:~-16%%scr:~-19%%len:~0,35% pause :loop set/a mn+=1 set src3=%src3% if %1 neq %mn% goto loop set mn= |
|
| 第21楼 dhlmdsnw | 发表于 2008-01-30 21:32 |
| 初级用户 发帖 59 积分 127 | |
|
哇。。。。耶耶耶。。。。
terse大大,我爱死你了!——耶耶耶。。。。。 什么没得说,就一句话感谢。。。我有得说。。。。非常感谢。。。고 맙 습 니 다 ! 太好了。。。我对你的景仰真得如涛涛江水,绵绵不绝。。。如雷贯耳。。。哇噻。。。简直太棒了。。。。丫丫丫。。。。 ——不过不知道会不会乐极生悲,明天拿到公司去试一下手。。。嘿嘿。。。每天都会要处理这样的东东。。好多丫。。。。我真是太感谢了!。。。大大万岁。。。。!!!! |
|
| 第22楼 dhlmdsnw | 发表于 2008-01-30 21:39 |
| 初级用户 发帖 59 积分 127 | |
|
哇噻,如果明天一下子双击一秒钟搞定,不知道那些人会拿什么眼光看我,会不会也对我景仰得如涛涛江水、绵绵不绝啊。。。想得都流口水了。。。。嘿嘿。。。terse大大,你不介意我在我的同事面前小秀一把吧。。。呵呵。。当然在论坛上我可不敢乱说。。。呵呵。。。耶耶耶。。。。成功。。成功。。。今天可以好好吃点东西。。睡个好觉。。。逛个好街了。。。大大的功劳最大!
同样也要感谢所有关注本帖的各位大虾,고 맙 습 니 다 !(谢谢!)。。。 啦啦啦。。。。。。 |
|
| 第23楼 dhlmdsnw | 发表于 2008-01-30 21:44 |
| 初级用户 发帖 59 积分 127 | |
|
terse大大,小小声的跟你说一下,我在论坛上还有一个帖子没解决。。。你看你老是不是休息两天。。。再到我那边看看啊。。。。嘿。。。怪不好意思的。。。。帖子的标题是“删除文本文件中的特殊字符但保持格式不变”,发了一两天了,都没人给个框架。。。。。当然你得好好休息一下。。。。期待中。。。。嘿嘿。。。http://www.cn-dos.net/forum/viewthread.php?tid=37424&fpage=1&highlight=
|
|
| 第24楼 dhlmdsnw | 发表于 2008-01-30 21:51 |
| 初级用户 发帖 59 积分 127 | |
|
天哪,乐得没边没谱了,忘了问一句:terse大大,你的代码支持外国名字不?
|
|
| 第25楼 terse | 发表于 2008-01-30 21:55 |
| 银牌会员 发帖 946 积分 2,404 | |
Originally posted by dhlmdsnw at 2008-1-30 21:51: 你试一下吧 应该可以 |
|
| 第26楼 dhlmdsnw | 发表于 2008-01-30 21:57 |
| 初级用户 发帖 59 积分 127 | |
|
说真的大大,我只学了一些最容易的VBA,都写好代码了,但是要经过Excel转换,我后来一想,为什么我不能直接一点呢,到后面翻了好多资料才约略懂得可以通过批处理进行直接转换。。。可是看了一些批处理的教学资料。。。感觉如果要解决还需要很多的时间。。。因此就上了这个论坛。。。通过学习你的代码。。。特别是一步一步解决我的问题。。。让我学到了许多有用的东西。。。我会进一步学习的。。。谢谢大大的支持!!!
|
|
| 第27楼 dhlmdsnw | 发表于 2008-01-30 22:20 |
| 初级用户 发帖 59 积分 127 | |
|
terse大大:经过测试:测试样本如:潘迪特·辛格、Tom Marvolo Riddle、特里帕蒂·辛格。中文的名字都没问题,如果是外国的名字,转换后就变成Tom了,后面的都没了,成空白了。。。没关系。。。以后我通过努力学习会把terse大大的这个模型给完善的,大大不用操心了。。。。总得留一点作业让我这后辈有一点东西可做嘛。。。什么事都让你亲自出马,那多不好啊。。。高手总得用在刀刃上。。嘿嘿。。。。大大休息完有空了,可要到我的另一张帖子上看看啊。。。谢了先!。。。呵呵。。。
|
|
| 第28楼 dhlmdsnw | 发表于 2008-01-31 12:27 |
| 初级用户 发帖 59 积分 127 | |
|
大大,太奇怪了。。。。我用了你的代码双击完。。。什么反应都没有?也没生成:14080005020080131001.txt文件,真是太奇怪了,什么事情都没发生?是不是我的电脑有问题啊。。。在家我是用XP,在公司是用2000。——我是先通过一个批处理,里面代码:copy *.txt /b a.txt /b。汇总生成一个a.txt文件,然后再用大大的代码,双击完就什么都没发生了?——大大再帮助看看啊。。。。
|
|
| 第29楼 dhlmdsnw | 发表于 2008-01-31 22:12 |
| 初级用户 发帖 59 积分 127 | |
|
我终于懂了。。。。原来是我原始文件行数较多,它要处理将近15秒呢。。。最后才生成的。。。。唉,真晕,我这没基础的人。。。
不过大大,还是出现了一个变数,还请帮助我解决一下。。。。 问题是:b文件中每一行(除了最后一行)前面的:140800050202是固定的,后面1407002601001238877是变动的,来源于a文件,但a文件中这个地方数字的最后如果出现非数字符号如*号(像这样1407002601001238877*),请帮助去掉,不是用空白来替换,也不是后面的空白往前整。而是实实在在的删除一个字节的意思。可以吗?——先谢了!!——还请大大们也继续关注啊。。。 期待中。。。。 |
|
| 第30楼 slore | 发表于 2008-02-01 03:24 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
本来打算睡觉,还是写完算了(有Example.vbs,改改就删除了,不然桌面好乱),基本结构套了上个脚本。
Example2.vbs:
把quote写成code了... -。- |
|
| 上一页 1 2 3 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |